LINUX.ORG.RU

gtk internals - внутреннее устройство gtk

 


0

1

Народ, подскажите, пож-ста, про внутреннюю структуру gtk.

Интересует грамотное, адекватное описание исходников gtk, что-нибудь на подобие схемы, т.е. что к чему относится и за что отвечает.

В частности, что отвечает за отрисовку диалогов «FileOpen/Save».

Цель: разобраться во внутреннем устройстве gtk, поменять «File» диалоги.

★★
Ответ на: комментарий от i-rinat

Это совсем не то. Нужна именно «внутренняя структура» gtk.

Т.е. какие функции/в каких файлах идёт отрисовка диалога в gtk.

И как хранятся ресурсы окна диалога, или как это устроено в gtk.

Boboms ★★
() автор топика
Ответ на: комментарий от Boboms

Читай документацию, что-то типа creating your own widgets. Ну и grep в руки.

Библиотека обширная и часто меняется. Писать книгу про то, как она устроена — дело неблагодарное. Да и к моменту завершения она будет устаревшей и накопит ошибки. Так что читай код, он и есть описание устройства.

Ты лучше расскажи, что ты там менять собрался. А мы расскажем тебе, почему это не нужно :)

i-rinat ★★★★★
()

поменять «File» диалоги

С чего ты взял, что твои патчи примут? Насколько я понимаю, проблема там не в том, что некому реализовать.

Ok
()
Ответ на: комментарий от greek_31

Благодарю за первый ответ по существу вопроса! Это понятно, но я имел ввиду что-то более наглядное, на подобие этого:

https://mail.gnome.org/archives/gtk-devel-list/2007-July/msg00028.html

Т.е. объяснение «структурной сути», в идеале - структурная диаграмма.

Boboms ★★
() автор топика
Ответ на: комментарий от Ok

С чего ты взял, что твои патчи примут?

Ты - третий бестолковик на сегодня.

Boboms ★★
() автор топика
Ответ на: комментарий от waker

Не совсем. Я ищу «что отрисовывает» в gtk окно диалога в частности, а в целом, как gtk устроена и работает «на пальцах».

Что-то вида: https://mail.gnome.org/archives/gtk-devel-list/2007-July/msg00028.html но более подробное. Подробную структурную схему с привязкой по функциям.

Boboms ★★
() автор топика
Ответ на: комментарий от waker

Другими словами, понять как устроен сам gtk (2-ой).

Boboms ★★
() автор топика
Ответ на: комментарий от Boboms

http://developer.gnome.org/platform-overview/2.32/figures/graphics.png.en

И всё это обмазано GOjbect-ом.

А теперь закройте тредик нафиг и не пишите больше про файловый диалог! Тебе всё равно объяснят, что ты велосипедист и тебя пошлют в рассылке, а ты всех перебанишь.

thriller ★★
()
Ответ на: комментарий от Eddy_Em

А ты так и хочешь править GTK?

Я хочу понять его внутреннее устройство. Как это вам по-русски объяснить? ;)

Есть, к примеру, сортир. Он состоит из сливного бачка, «горшка» и сидалища.

В горшке есть часть, где скапливается вода, чтобы не пахло дерьмом. Она устроена так то и так то... (схема такая-то, рис. такой-то)

В бачке есть сливной механизм. Он наполняет бачок водой и предотвращает перелив. А устроен он так то и так то... (схема такая-то, рис. такой-то)

Так вот gtk... ;) :)

Boboms ★★
() автор топика
Ответ на: комментарий от thriller

http://developer.gnome.org/platform-overview/2.32/figures/graphics.png.en

Да, благодарю, что-то вроде этого, на на порядок подробнее.

Тебе всё равно объяснят, что ты велосипедист и тебя пошлют в рассылке, а ты всех перебанишь.

Тем не менее, ты - пятый. :)

Boboms ★★
() автор топика
Ответ на: комментарий от Eddy_Em

Зачем?

А ты с какой целью интересуешься? ;)

Тогда надо стать разработчиком GTK.

Чтобы понять как устроен стол/стул, надо стать их разработчиком?

Boboms ★★
() автор топика
Ответ на: комментарий от Boboms

А ты с какой целью интересуешься? ;)

Да не могу понять, на кой черт тебе это нужно. Если хочешь сделать свой собственный диалог, то не проще ли тогда уж воспользоваться более гибкой графической библиотекой, motif, например?

Чтобы понять как устроен стол/стул, надо стать их разработчиком?

Ты хочешь не понять, как стол/стул устроен, а как его собрать.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Boboms

Если имеются закрытые составляющие объектов, то я такого никогда не видел. Открытые, сам понимаешь, описаны в API.

Самое главное забыл: http://git.gnome.org/browse/gtk /tree/gtk/gtkfilechooserprivate.h

Всё зависит от того, что именно ты хочешь сделать.

FileChooser неплохо делится на составные виджеты, можно неплохо сузить область поиска нужной инфы.

greek_31 ★★
()
Ответ на: комментарий от thriller

У документации GTK всю жизнь были вводные статьи «что там под капотом».

Вот ты можешь сделать мне одолжение и ткнуть меня носом в ссылку, пожалуйста, по gtk2?

Как раз именно «что там под капотом» и интересует, но не в plain text, а рисунки по функциям/файлам исходников. Если таковые есть, конечно.

И, конкретика, через что (cairo и где в исходниках) рисуются окна (диалоги), виджеты (tree view, контейнеры) и т.п.?

Если это есть «в природе» документации gtk.

Boboms ★★
() автор топика
Ответ на: комментарий от greek_31

Самое главное забыл:

Вот, походу это я и искал.

Теперь самый главный вопрос: а ты откуда это знаешь?

Boboms ★★
() автор топика
Ответ на: комментарий от Eddy_Em

Да не могу понять, на кой черт тебе это нужно.

Теперь самый главный вопрос: а зачем тебе это? ;) :) :D

Если хочешь сделать свой собственный диалог, то не проще ли тогда уж воспользоваться более гибкой графической библиотекой, motif, например?

У,Ё Маё, я хочу понять «подкапотню» gtk.

Как что там отрисовывается (через cairo, xlibs и т.п.) -> почему такие тормоза при отрисовке и жор ЦПУ (XOrg-ом).

Ты хочешь не понять, как стол/стул устроен, а как его собрать.

Нет, я хочу понять как стул устроен и насколько сложно его поменять по частям, если это имеет смысл?

Boboms ★★
() автор топика
Ответ на: комментарий от Boboms

берешь любую вводную статью по gtk, и читаешь. потом пишешь свой filechooser. знать внутренности GTK для этого не обязательно. чтобы заменить filechooser на другой — достаточно реализовать свой велик с таким же API, скомпилить, и подсунуть через LD_PRELOAD. если цель именно в этом — бери исходники gtkfilechooser.c (и все что ему нужно), перетаскивай в отдельную папку, собирай в .so, и модифицируй как душе угодно. а все что ты в этом треде понаписал — какая-то дурь малолетняя.

waker ★★★★★
()

напиши свой диалог с блекджеком и шлюхами. реализуй интерфейс соответсвующий в своем объекте, переопредели две функции создающие диалог этот и LD_PRELOADом грузи

ckotinko ☆☆☆
()
Ответ на: комментарий от Boboms

Как что там отрисовывается (через cairo, xlibs и т.п.) -> почему такие тормоза при отрисовке и жор ЦПУ (XOrg-ом).

используй профайлер. oprofile, например.

waker ★★★★★
()
Ответ на: комментарий от Boboms

Вот ты можешь сделать мне одолжение и ткнуть меня носом в ссылку, пожалуйста, по gtk2?

http://developer.gnome.org/gtk/2.24/chap-drawing-model.html

Как раз именно «что там под капотом» и интересует, но не в plain text, а рисунки по функциям/файлам исходников. Если таковые есть, конечно.

Любая картинка сложнее той, что я показал сперва, быстро превратится в огромную простыню из спагетти (особенно если тебе ещё и по файлам раскладывать).

И, конкретика, через что (cairo и где в исходниках) рисуются окна (диалоги), виджеты (tree view, контейнеры) и т.п.?

Берёшь рандомный туториал по написанию виджетов и читаешь. (Ну, «туториал», это, конечно, громко сказано). И про GtkWindow почитаешь, и про GdkWindow, и про cairo context узнаешь.

Только, боюсь, большая часть этих данных при профилировании рандомного приложения тебе будет бесполезна. Иди лучше курить доки от gdb/valgrind.

thriller ★★
()
Ответ на: комментарий от thriller

Любая картинка сложнее той, что я показал сперва, быстро превратится в огромную простыню из спагетти (особенно если тебе ещё и по файлам раскладывать).

В смысле текстом и написанием кода это осилить куда проще.

thriller ★★
()
Ответ на: комментарий от waker

знать внутренности GTK для этого не обязательно.

Давай определимся сначала с терминами, так? Мы говорим про application или system level?

а все что ты в этом треде понаписал — какая-то дурь малолетняя.

По существу не знаю что тебе ответить. В чём «малолетство», в желании разобраться «в кишках» gtk? Я тебя не понял, чесслово.

Boboms ★★
() автор топика
Ответ на: комментарий от thriller

Любая картинка сложнее той, что я показал сперва, быстро превратится в огромную простыню из спагетти (особенно если тебе ещё и по файлам раскладывать).

Именно её я и имею ввиду. Даже чертежи А0 - не есть проблема, если есть желание.

Берёшь рандомный туториал по написанию виджетов и читаешь.

Уже ближе к сути, но это - отдельный кусок. Неужели gtk-ашники не сварганили общую диаграмму для собственных нужд?

Boboms ★★
() автор топика
Ответ на: комментарий от waker

берешь любую вводную статью по gtk, и читаешь. потом пишешь свой filechooser. знать внутренности GTK для этого не обязательно. чтобы заменить filechooser на другой — достаточно реализовать свой велик с таким же API, скомпилить, и подсунуть через LD_PRELOAD. если цель именно в этом — бери исходники gtkfilechooser.c (и все что ему нужно), перетаскивай в отдельную папку, собирай в .so, и модифицируй как душе угодно. а все что ты в этом треде понаписал — какая-то дурь малолетняя.

Люто плюсую.

geekless ★★
()
Ответ на: комментарий от Boboms

Давай определимся сначала с терминами, так? Мы говорим про application или system level?

давай определение application и system levels.

По существу не знаю что тебе ответить. В чём «малолетство», в желании разобраться «в кишках» gtk? Я тебя не понял, чесслово.

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

waker ★★★★★
()
Ответ на: комментарий от Boboms

Ок, благодарю за совет, попробую. Но, боюсь, что итак ответ известен.

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

waker ★★★★★
()
Ответ на: комментарий от waker

давай определение application и system levels.

Application level - это прикладные программы, например плейеры системы DeadBeef (одного известного автора, фамилию забыл). System level - это gtk, qt xlib и т.п. Подробнее: http://en.wikipedia.org/wiki/System_programming Там же и про Application.

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

Я про доки и спрашиваю, только про подробные и по существу. Не про использование API, а про реализацию API.

Boboms ★★
() автор топика
Ответ на: комментарий от Boboms

System level - это gtk, qt xlib и т.п.

ну вот ты сам и ответил на свой вопрос. раз по твоей терминологии gtk это system level — значит мы говорим о system level. следующий вопрос?

Я про доки и спрашиваю, только про подробные и по существу. Не про использование API, а про реализацию API.

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

waker ★★★★★
()
Ответ на: комментарий от waker

документации на реализацию API

Кстати, навскидку из такого вспоминаются только книги, посвященные реализации юниксовых ядер, и отчеты по реверс инженерингу NT.

geekless ★★
()
Ответ на: комментарий от waker

следующий вопрос?

Твою дивизию, как оно (gtk) устроено - в картинках и комиксах? Что тут не понятного?

чтобы хоть примерно понять что ты хочешь.

Первое, что нагуглил:

http://en.wikipedia.org/wiki/Structure_chart

http://sun.iwu.edu/~jhaefner/CS127SP12/800px-CPT-Structured_Chart_Example.svg...

http://www.multi-access.de/mint/aim/2012/20120516/AUI.png

В общем смысле:

http://www.sei.cmu.edu/productlines/ppl/organizational_structure.jpg

http://learning.londonmet.ac.uk/languages/CALL/docs/cushion/articles/access_h...

http://users.jyu.fi/~jpt/doc/thesis/FIG4-5A.gif

я не припоминаю, чтобы сталкивался с таким.

Я не утверждаю, что такое есть в природе (gtk, qt), а как раз и спрашиваю знатоков.

Boboms ★★
() автор топика
Ответ на: комментарий от Boboms

Твою дивизию, как оно (gtk) устроено - в картинках и комиксах? Что тут не понятного?

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

Я не утверждаю, что такое есть в природе (gtk, qt), а как раз и спрашиваю знатоков.

я имею ввиду, что я не сталкивался с таким вообще, не в контексте gtk.

правда, после поста geekless щас вспомнил что в детстве читал книжку zx spectrum rom disassembly. там был просто ассемблерный дамп и комменты к каждой строчке. но картинок и комиксов там вроде не было.. разве что обложка..

ps: все твои картинки совершенно не в тему, ни одна из них не представляет из себя «описание как устроена программная библиотека в виде картинок и комиксов». похоже, ты сам не знаешь что ищешь.

waker ★★★★★
()
Последнее исправление: waker (всего исправлений: 1)
Ответ на: комментарий от waker

непонятно, с чего ты взял что документацию такого рода кто-то внезапно оформляет в виде картинок и комиксов.

Я имел ввиду структурные диаграммы вида:

http://ru.wikipedia.org/wiki/Диаграмма_компонентов

http://en.wikipedia.org/wiki/Unified_Modeling_Language

ps: все твои картинки совершенно не в тему, ни одна из них не представляет из себя «описание как устроена программная библиотека в виде картинок и комиксов». похоже, ты сам не знаешь что ищешь.

http://en.wikipedia.org/wiki/Decomposition_diagram#Decomposition_diagram

Boboms ★★
() автор топика
Ответ на: комментарий от waker

Точно! Покорно благодарю!!!

Вот бы такое по устройству gtk. ИМХО, наверное есть такая информация, но возможно что это - инсайд.

Boboms ★★
() автор топика
Ответ на: комментарий от Boboms

bq. Именно её я и имею ввиду

Предпочитаете непонятную картинку понятному тексту? Ню-ню.

bq. Неужели gtk-ашники не сварганили общую диаграмму для собственных нужд?

Зачем?! В голове нужна только общая схема с компонентами. Всю схему (читай: диаграмму вызовов, промежуточных схем тебе не получить) ты задолбаешься держать в голове, и она тебя будет постоянно отвлекать и путать. Тебя всё время будут интересовать только конкретные штуки в данном конкретном месте, например, в x11-коде gdk.

И, кстати, те картинки, что ты привёл ниже по треду в качестве примера — они такие же подробные, как и схема «gtk → [gdk pango] → [cairo glib]». То есть ни разу не подробные. Фигня полная. Отличаются только наличием стрелочек. Вся толковая документация, как всегда, снова в тексте.

thriller ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.