OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 16:18

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




Начать новую тему Ответить на тему  [ Сообщений: 120 ]  На страницу 1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: DIA: BlackBox Component Builder 1.6 + GTK2
СообщениеДобавлено: Понедельник, 15 Август, 2011 12:10 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Описания предложения к совместному творчеству:
Портирование большей части BB под Ubuntu через GTK2 на основе существующих наработок. Проект имеет комфортный метод разработки из под Ubuntu и полностью рабочий компилятор из самой Версии для Линукс. Среда содержит многие наработки касающиеся каркаса, также модуль для TCP от Trurl.

В среде много ошибок, предлагаю улучшать постепенно совместными силами.

Для работы над проектом создан репозиторий git.
Загружать среду себе на ПК такой командой:
Код:
git clone ssh://USERNAME@git.molpit.ru/home/git/linproj YOURFOLDER
Имена пользователей и пароли высланы личными сообщениями, благо человек не много.


Вывести историю коммитов и их ключей
Код:
git log

Откатиться (например) до первой итерации на момент создания этого сообщения
Код:
git reset --hard 9ae7c523def41e270223a2d40e4e6805e748dc9d

Перед этим желателно создать новую ветку
Код:
git branch iter0
git checkout iter0


Удалил вложение с первым вариантом, поскольку его скачивание вредно без видения последней версии, из репозитория можно восстановить, как описано выше.

Эта версия ББ содежит рабочее ядро для линукс, не требует пускача и т.п. поскольку использует не DevElfLinker, а LinLinker!


Вложения:
bblin.png
bblin.png [ 314.39 КБ | Просмотров: 12427 ]


Последний раз редактировалось Иван Денисов Понедельник, 28 Ноябрь, 2011 08:38, всего редактировалось 8 раз(а).
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Первая итерация
СообщениеДобавлено: Понедельник, 15 Август, 2011 14:00 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Иван Денисов писал(а):
Я попробую поработать над HostMenus.Loop чтобы 100% проц не загружался.
Вы ведёте журнал изменений?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Первая итерация
СообщениеДобавлено: Понедельник, 15 Август, 2011 19:17 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Евгений Темиргалеев писал(а):
Вы ведёте журнал изменений?
Стараюсь цветом выделять правки, и добавляю комментарии, когда чувствую, что это необходимо, но журнал не веду. Там цветом выделено много от старых правщиков, также. Могу вести вверху писать, что и когда сделал, думаю Вы правы, так будет удобнее, если процесс пойдет.


Последний раз редактировалось Иван Денисов Среда, 17 Август, 2011 17:11, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Итерация 2
СообщениеДобавлено: Среда, 17 Август, 2011 08:56 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Сделал петлю, но она не очень работала из-за неточного системного времени в LinLibc.clock(), вернул как было, НО починил сборку мусора! там кто-то убрал DEC(gc).

Обнаружил, когда возникают ошибки при нажатии клавиш, это
Код:
HostMenus.OpenApp gtk_key_snooper_install()
как то неверно работает обработчик нажатия клавиш. После его комментирования проблема пропала, вьюшки сохраняются, документы, проект можно создавать, компилировать и выполнять полностью в версии Линукс теперь, также работает вырезать вставить, но из-за отсутствия обработки клавиши CTRL этим сложно пользоваться!

Выяснил, что Pango сделан но не до конца, не хватает хедров в Gtk2Gtk и рисуются сейчас шрифты неправильно, просто какой-то шрифт по умолчанию.
Каким образом делали эти хедеры Gtk2? Вопрос автоматической хедерогенерации открыт.

Сделал запуск графического приложения при запуске, в качестве демо вьюшки :)

Текущая версия репозитория доступна в случае каких либо дальнейших коммитов так:
Код:
git clone ssh://USERNAME@git.molpit.ru/home/git/linproj YOURFOLDER
cd YOURFOLDER
git reset --hard bb5a8bed8fcb0fe879a4f9ff6544fb2d8147284d


Вложения:
Iteration2.png
Iteration2.png [ 236.56 КБ | Просмотров: 12397 ]
iteration2.png
iteration2.png [ 396.21 КБ | Просмотров: 12396 ]


Последний раз редактировалось Иван Денисов Среда, 17 Август, 2011 17:11, всего редактировалось 1 раз.
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Итерации
СообщениеДобавлено: Среда, 17 Август, 2011 09:47 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Бурный прогресс :)

Это кто ж такой редиска сборщик мусора поломал?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Итерации
СообщениеДобавлено: Среда, 17 Август, 2011 17:27 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Info21 писал(а):
Это кто ж такой редиска сборщик мусора поломал?
Я бы тоже хотел знать кто автор релиза BlackBox_Linux_V20050512_gtk2, который Вы мне прислали. Там самый свежий порт хедров GTK2 на КП, поэтому хотелось бы знать как это делают люди знающие?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Итерации
СообщениеДобавлено: Среда, 17 Август, 2011 19:48 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Иван Денисов писал(а):
Там самый свежий порт хедров GTK2 на КП, поэтому хотелось бы знать как это делают люди знающие?
По-моему, качественное портирование хедеров --- дело ручное. Везде свой стиль, на сях извратиться по-всякому можно. Но под конкретный стиль --- можно подстроиться:
- во-первых, использовать полуавтоматику (если надо --- есть перевод enum-ов)
- во-вторых, если сишные заголовки генерятся автоматом (вроде на форуме это говорили про Gtk-е), то их точно можно автоматом и конвертировать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Итерация 2
СообщениеДобавлено: Четверг, 18 Август, 2011 10:27 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Иван Денисов писал(а):
НО починил сборку мусора! там кто-то убрал DEC(gc).
"там" это где? Хотелось бы посмотреть это место Kernel в нашей ветке.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Итерация 2
СообщениеДобавлено: Четверг, 18 Август, 2011 15:18 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Евгений Темиргалеев писал(а):
Иван Денисов писал(а):
НО починил сборку мусора! там кто-то убрал DEC(gc).
"там" это где? Хотелось бы посмотреть это место Kernel в нашей ветке.

Это место находится в HostMenus.Loop, там есть переменная gc и она никак не уменьшается в петле, хотя должна. И из-за этого не вызывается Kernell.Collect и сборки мусора не происходит.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Итерации
СообщениеДобавлено: Четверг, 18 Август, 2011 15:28 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Иван Денисов писал(а):
Я бы тоже хотел знать кто автор релиза BlackBox_Linux_V20050512_gtk2, который Вы мне прислали. Там самый свежий порт хедров GTK2 на КП, поэтому хотелось бы знать как это делают люди знающие?
Мне Оминк выдали нечто, потом руку чуть-чуть приложил Трурль, но что он мог бы испортить сборку мусора -- совершенно невероятно.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Итерация 2
СообщениеДобавлено: Четверг, 18 Август, 2011 16:28 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Иван Денисов писал(а):
Евгений Темиргалеев писал(а):
Иван Денисов писал(а):
НО починил сборку мусора! там кто-то убрал DEC(gc).
"там" это где? Хотелось бы посмотреть это место Kernel в нашей ветке.
Это место находится в HostMenus.Loop, там есть переменная gc и она никак не уменьшается в петле, хотя должна. И из-за этого не вызывается Kernell.Collect и сборки мусора не происходит.
Это не поломка сборщика мусора. Наверное, при описании сделанного не стоит сильно спешить. :) Лучше помедленее, но подробнее.

P.S. Ещё одно подтверждение необходимости (для коллективной работы) подробного описания изменений в сопровождаем/дорабатываемом стороннем коде от на каждый чих вида: зачем? где? что?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: DIA: BlackBox Component Builder 1.6rc6 + GTK2
СообщениеДобавлено: Четверг, 18 Август, 2011 17:00 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Да, может Омник специально убрали это на время, откуда знать, просто теперь этот сборщик (который был в исправности), вызывается, а раньше не вызывался. Так будет правильнее сказать. Собственно работа над проблемным местом — Loop.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: DIA: BlackBox Component Builder 1.6rc6 + GTK2
СообщениеДобавлено: Четверг, 18 Август, 2011 20:20 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
Иван Денисов писал(а):
Собственно работа над проблемным местом — Loop.
А нельзя ли этот Loop распилить и убрать, раз он для Gtk не естественен? Виндовый схематично:
Код:
WHILE ОжидатьИПолучитьСобытие(событие) DO
  Обработать(событие)
END
Какие события: клавиатура, мышь, таймер и вроде всё. У GLUT как и Gtk свой главный цикл. Для отработки событий там задаются их обработчики, т.е. для GLUT можно было бы попробовать так:
Код:
PROCEDURE ОбработчикМыши (x, y: INTEGER; ....);
  VAR событие: Событие
BEGIN
  Сформировать событие от мыши
  Обработать(событие)
END Обработчик Мыши;
PROCEDURE ОбрабочикКлавиатуры ...
PROCEDURE ОбработчикТаймера ...
Loop соответственно GLUT-й крутится. Или в ББ-м Loop кроме обработки событий ещё какие-то нюансы?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: DIA: BlackBox Component Builder 1.6rc6 + GTK2
СообщениеДобавлено: Четверг, 18 Август, 2011 23:52 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Хорошая идея, попробовать вклиниться в петлю Gtk, сейчас она не вызывается и процесс крутится блэкбоксом самим.
Недостатки:
А. В серверной версии так же проблема и она не решена...
Б. Хотелось бы, чтобы и без гуя GTK среда крутила ServicesActions и собирала мусор


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: commit a7e4ad3224aec43137c516a8f38f865c347161de
СообщениеДобавлено: Пятница, 19 Август, 2011 00:00 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Резюме правок:
    1. Теперь ББ рисует TrueType шрифтами и русскими буквами, помог модуль для работы с Utf строками, я скопировал одну функцию из него. Панго надо кормить именно UTF8 строками.
    2. исправлен HostDialog.GetOK и HostDialog.Close
    3. Добавлена загрузка HostMechanisms и теперь работает конструктор форм

Предлагаемые сейчас независимые направления совместной работы:
    1. Поправить метрику шрифтов HostNewFont, HostFonts, HostPorts.DrawString
    2. HostMenus.Loop, задача придумать организацию прерываний или любой другой вариант, но не зависящий от GTK
    3. Обработка нажатий клавиш HostMenus
    4. Обработка мыши HostMenus
    5. Доработка radioButton HostCFrames

На неделю начиная с сегодня работать по этому направлению не буду, поэтому если кто-то хочет продвинуться по выделенным направлениям или любым другим, и выложить правки в репозиторий, то конфликтов не будет.


Вложения:
PangoWorksFixMetrics.png
PangoWorksFixMetrics.png [ 348.79 КБ | Просмотров: 12360 ]


Последний раз редактировалось Иван Денисов Пятница, 19 Август, 2011 17:53, всего редактировалось 1 раз.
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Итерация 2
СообщениеДобавлено: Пятница, 19 Август, 2011 08:09 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
Евгений Темиргалеев писал(а):
P.S. Ещё одно подтверждение необходимости (для коллективной работы) подробного описания изменений в сопровождаем/дорабатываемом стороннем коде от на каждый чих вида: зачем? где? что?

А еще хорошо бы иметь описание, как оно ваще работает.
Иван Денисов писал(а):
Это место находится в HostMenus.Loop, там есть переменная gc и она никак не уменьшается в петле, хотя должна. И из-за этого не вызывается Kernell.Collect и сборки мусора не происходит.

1. Вообще, вызывать Kernell.Collect из главного цикла необходимости нет. Это - некая эвристика, попытка сместить сборку мусора в периоды ожидания действий пользователя.
2. Обратите внимание на процудуру MenuSelect.;)
3. Если вставить DEC(gc) в HostMenus.Loop, сборщик мусора будет вызываться каждые 100 нажатий на клавишу/движений мышкой, что мне лично представляется несколько излишним.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Итерация 2
СообщениеДобавлено: Пятница, 19 Август, 2011 08:21 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
Иван Денисов писал(а):
рисуются сейчас шрифты неправильно, просто какой-то шрифт по умолчанию.

Deja vu ;)
Trurl писал(а):
GTK2 несколько разочаровал. Вроде, под виндовсом кое-как заработало. Попробовал запустить это дело на линухе - все тексты рисуются одним шрифтом. На FreeBSD - та же петрушка.
После некоторых экспериментов выяснил, что gdk_font_from_description возвращает один и тот же указатель. Еще через некоторое время догадался заглянуть в исходники.
Код:
GdkFont *
gdk_font_from_description_for_display (GdkDisplay  *display,PangoFontDescription *font_desc)
{
  g_return_val_if_fail (GDK_IS_DISPLAY (display), NULL);
  g_return_val_if_fail (font_desc != NULL, NULL);

  return gdk_font_load_for_display (display, "fixed");
}

Это у них называется "an approximation of the Pango font". :?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: DIA: BlackBox Component Builder 1.6rc6 + GTK2
СообщениеДобавлено: Пятница, 19 Август, 2011 18:07 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Trurl писал(а):
. Вообще, вызывать Kernell.Collect из главного цикла необходимости нет. Это - некая эвристика, попытка сместить сборку мусора в периоды ожидания действий пользователя.
3. Если вставить DEC(gc) в HostMenus.Loop, сборщик мусора будет вызываться каждые 100 нажатий на клавишу/движений мышкой, что мне лично представляется несколько излишним.
Тут вы немного неправы, сейчас HostMenus.Loop - главная петля в каркасе, она вызывается только один раз и крутит все в том числе сборку мусора, но сделана она через WHILE без прерываний и поэтому молотит 100% проц.
Trurl писал(а):
Обратите внимание на процудуру MenuSelect.;)
Вот за это спасибо. От туда ее можно запросто убрать, она там теперь не имеет смысла, а gcCycles увеличить до 1000 или 10000 чтобы пореже очистка происходила, сейчас она работает в режиме почти непрерывного времени.

Про панго шрифты. Да Вы правы, описания шрифтов требуется делать на панго полностью не используя Gdk и Gtk про это они и в документации пишут.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: commit: 2bda4870f9682013aee9d4d47702e1aeb552c1a0
СообщениеДобавлено: Четверг, 01 Сентябрь, 2011 02:04 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
В ядро Lin версии добавлен Call и Signature из BB1.6rc6 что позволило заменить полностью старый Meta на Meta из BB1.6rc6, и убрать зависимость от старой подсистемы Std, теперь Std полностью из версии 1.6rc6.

Итак Lin версия сейчас заключена в подсистемах:
Host
Lin
Gtk2
System

Все остальное от bb1.6rc6.7z с сайта оберонкора без изменений абсолютно.

Свои изменения я пишу в секции DONE в начале модуля и сами правки выделяю синим цветом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: DIA: BlackBox Component Builder 1.6rc6 + GTK2
СообщениеДобавлено: Воскресенье, 11 Сентябрь, 2011 10:29 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Кто-то делал клон?

Если нет, то причина в том, что нужно выложить в SNV на oberoncore проект (нет возможности/желания/времени использовать git) или никто не нашел для себя задачи, которую хотел бы решить, чтобы сделать вклад в перенос?

Есть ли желающие работать вместе над проблемой переноса дальше?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 120 ]  На страницу 1, 2, 3, 4, 5, 6  След.

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


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

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


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

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