LINUX.ORG.RU

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

 


0

1

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

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

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

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

★★
Ответ на: комментарий от ananas

Благодарю за наводку. Да я заглянул, но весь вопрос во времени вхождения.

Я думал, что у проекта такого уровня (важности и сложности) есть грамотная портянка.

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

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

а Ранма - мужик :)

С каких пор у мужиков сиськи растут? Или у вас там мужики особой брутальности водятся в комплекте с сиськами и томным взглядом?

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

Да, ты правильно понял ход мыслей. Только у неё другая задача - описать из чего устройство собрано и как его чинить. В прикладном смысле. «Собрать» - это трассировка ПП + сборочный чертёж.

А если у тебя телевизор аналоговый полетит, ты полезешь читать схемы ко всем платам, или же только в нужный тебе блок (обработки сигналов, например)? Чаще всего ты не то что на всю — на конкретную схему не посмотришь и пойдёшь выпаивать вздувшийся конденсатор. Так и здесь: хватит дрочить схему всего (И ПОПОДРОБНЕЕ, ПОДРОБНЕЕЕ!!!), бери дебаггер/профайлер и смотри что нужно.

В качестве прикладной задачи FileOpenSave - первое что пришло в голову.

И тебе для решения этой задачи всенепременно нужно знать, что творится в X11-коде GDK и как занимается рендерингом текста Pango, причём обязательно в виде загромождённой схемы? «Слои абстракции нам не нужны, высокоуровневое всё нам не нужно, Турьянмаа наш б-г»? Ссылок на то, что тебе нужно, выше полно, а если тебя смущает рандомный вызов gdk_window_reparent — берёшь и читаешь по нему документацию, спускаясь вниз ровно туда, куда нужно. Ещё раз: огромная схема для запугивания менеджеров ничему толковому тебя не научит.

В GTK ни одна прикладная задача не потребует от тебя такой картинки

И тут Остапа понесло... Я не говорю про app, я говорю про sys.

«Прикладная» тут — не в том смысле, что мы только ПО для хомякча с убунтой пишем, а в том, что мы не ставим перед собой явно экспериментальных (наркоманских) задач типа замены GObject на QObject or so. Новой пердюльке типа КнопкаСГрадиентом совершенно пофигу, в составе отдельного приложения ли она, какой-нибудь libsexy или же в кодовой базе самого GTK, она будет работать и так, и так.

Или, по-твоему, патчи типа этого решают далеко не прикладные задачи, а написаны чисто чтобы поржать красиво было?

И потом, я тебе уже показал на конкретном примере, что та графическая макаронина менее удобна

Где?

Здесь, прямо в первом же комментарии

Ты просто не можешь вылезти из собственной зашоренности, к сожалению.

Нет, ты.

В ряде случаев проще cli, в ряде - gui.

Как может усложнить графическое представление объекта?

— графические инструменты никогда ничего не усложняют!
<...>
— cli в ряде случаев проще.

Занавес.

Ты думаешь, что все вокруг одинаковые и все такие же как ты? И всем удобно что-то делать как удобно это делать тебе? Отвыкай всё мерить по себе.

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

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

Ничего не знаю, на аватаре изображен Ранма, а Ранма - мужик :)

Oh, shi--! I've just googled it. Please, help me unsee that.

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

А если у тебя телевизор аналоговый полетит, ...

То я сначала должен понять его устройство в целом, нет? Т.е., сначала надо определить какой модуль сбоит, а уж потом с конкретным модулем ковыряться, так? Или у тебя другая схема?

И тебе для решения этой задачи всенепременно нужно знать, что творится в X11-коде

Тебе не говорили что ты - невосприимчив? Мне не нужно решить задачу с наследованием FileSave диалога, мне нужно разобраться (коли ты по-русски не понимаешь) в underlying mechanisms (realization) of gtk system (particularly, graphical stack realization). Как еще тебе объяснить?

Ещё раз: огромная схема для запугивания менеджеров ничему толковому тебя не научит.

Ты пишешь глупость. Полную, причём. Не затруднись, опиши словами Айвазовского в качестве понимания.

Или, по-твоему, патчи типа этого решают далеко не прикладные задачи...

По моему, человек во вменяемом состоянии должен воспринимать разницу м/у прикладным и системным программированием. Суть положения вещей.

Здесь, прямо в первом же комментарии

Где ты в первом комменте схему узрил?

Занавес.

Твои домыслы не объясняют сути вещей.

которому эта текстовая макаронная фабрика

Это как раз хороший пример из серии «много текста», адекватное графическое его представление увеличило бы «читаемость» в разы. Что здесь не понятного?

ЗЫ: Сколько тебе лет?

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

ЗЗЫ: про возраст можешь не стараться. Твой примерный я уже выяснил.

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

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

Что-то я никак не въезжаю, как тебе принципиальная схема телевизора поможет понять, какой модуль сбоит. Вот допустим, у телевизора вместо картинки посередине горизонтальная полоска (реальная поломка). Вот здесь есть схема того телевизора: http://archive.espec.ws/section411/file7711.html. Как будешь искать модуль, который сбоит?

underlying mechanisms (realization) of gtk system (particularly, graphical stack realization)

не, так не говорят :). Ещё не разу не слышал, чтобы «realization» говорили. Да и mechanisms тоже дикость какая-то. Говорят underlying technology и stack implementation.

Где ты в первом комменте схему узрил?

Ну я же узрел. Как раз ссылку дал на ту самую диаграмму наследований.

Кстати, а сколько лет тебе? Ну так, для протокола.

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

То я сначала должен понять его устройство в целом, нет? Т.е., сначала надо определить какой модуль сбоит, а уж потом с конкретным модулем ковыряться, так? Или у тебя другая схема?

То есть ты собираешься изучать не модули, из которых телевизор состоит, а сразу всю сконкатенированную схему, и чтобы все микросхемки были сразу развёрнуты до их же принципиальных схем? Как рациональненько!

Тебе не говорили что ты - невосприимчив? Мне не нужно решить задачу с наследованием FileSave диалога, мне нужно разобраться (коли ты по-русски не понимаешь) в underlying mechanisms (realization) of gtk system (particularly, graphical stack realization). Как еще тебе объяснить?

А как тебе объяснить, что для наследования диалога, состоящего из ОКНО, КНОПОЧКИ и ТАБЛИЧКИ, тебе не нужно понимать, какие X11-вызовы происходят под капотом? Унаследовал и распидорасил. Вот когда понадобится, тогда и полезешь по графу вниз. В нужном направлении. Нет, блин, хотим знать всё с точностью до сисколла! Или ты опять нам что-то не договариваешь?

По моему, человек во вменяемом состоянии должен воспринимать разницу м/у прикладным и системным программированием. Суть положения вещей.

Ещё раз: какая, нахуй, разница, где ты будешь наследовать этот диалог? Это ровным счётом ничего не меняет. Реализация будет та же, поведение — тем же, всё будет точно тем же. Ты продолжаешь зачем-то высасывать из пальца какие-то бредни про прикладное и системное, будто диалог файловый — исключительно админский инструмент, не для юзера.

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

Тебе Айвазовский схему телевизора рисовал? Она тебе дофига помогла с пониманием этого телевизора, что ли?

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

С таким количеством пидорасни ни о каком адекватном графическом представлении не может быть и речи. dot или любой другой инструмент эту кашу превратит в графический клубок, в котором ты точно так же запутаешься, только ещё быстрее. А ты просишь развернуть все сущности GTK и нижележащих систем до вот таких размеров поеботы (без всякой практической пользы, «ДАЙТЕ БЛИН» и всё тут), а потом ещё и в графику перевести.

ЗЫ: Сколько тебе лет?

За неимением аргументов оппонент перешёл на личности, за что был сопровождён в баню. Всего вам доброго.

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

Что-то я никак не въезжаю, как тебе принципиальная схема телевизора поможет понять, какой модуль сбоит.

Для продолжения конструктивного диалога обозначь (хотя бы диапазон) свой биологический возраст.

Вот допустим, у телевизора вместо картинки посередине горизонтальная полоска

Кадровая развёртка.

Вот здесь есть схема того телевизора: http://archive.espec.ws/section411/file7711.html. Как будешь искать модуль, который сбоит?

Ты кто про образованию?

Ещё не разу не слышал, чтобы «realization» говорили. stack implementation.

Тебе настолько нехер делать, что ты готов играть в синонимы?

Кстати, а сколько лет тебе? Ну так, для протокола.

36

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

То есть ты собираешься изучать не модули, из которых телевизор состоит, а сразу всю сконкатенированную схему,

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

Например такую

А как тебе объяснить, что для наследования диалога, состоящего из ОКНО, КНОПОЧКИ и ТАБЛИЧКИ, тебе не нужно понимать, какие X11-вызовы происходят под капотом?

Я искренне надеюсь что ты получил не диплом инженера (по технике), иначе с такими «инженерами» полная труба.

Ещё раз: какая, нахуй, разница, где ты будешь наследовать этот диалог?

Ты совсем дурак? У МЕНЯ НЕТ ЦЕЛИ НАСЛЕДОВАТЬ ДИАЛОГ!!! У меня ДРУГАЯ ЦЕЛЬ - РАЗОБРАТЬСЯ В УСТРОЙСТВЕ gtk, иоп твою...

За неимением аргументов оппонент перешёл на личности

Я не перехожу на личности, я пытаюсь определить меру твоего восприятия (читай - опыта).

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

обозначь (хотя бы диапазон) свой биологический возраст.

28

Кадровая развёртка.

Не угадал. Кадровая развёртка была в порядке. Это был глюк управляющей логики. Для починки кроме пульта ничего не понадобилось. Вот видишь, схема тебе не помогла.

Ты кто про образованию?

Физик.

Тебе настолько нехер делать, что ты готов играть в синонимы?

А я вот с радостью почитал бы, в каких местах у меня кривой английский и как надо говорить правильно. Что ж, каждому своё.

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

Это был глюк управляющей логики.

Эта «управляющая логика» управляла чем?

Физик.

Ох,ё...

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

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

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

У меня ДРУГАЯ ЦЕЛЬ - РАЗОБРАТЬСЯ В УСТРОЙСТВЕ gtk

Тут вот какое дело. То, что ты называешь целью, остальные в этой нити называют мечтой. Под целью чаще всего понимаются определённые достижимые и измеримые понятия. Если ты изучаешь устройство GTK+, и тебя прервут в случайный момент вопросом «ты достиг цели? Разобрался в устройстве GTK+?», ты не сможешь ответить. Потому что достичь того, что ты называешь целью, нельзя. Применительно к конкретному вопросу — всегда останется что-то в GTK+, чего ты не понимаешь.

Тебе пытаются помочь, облачив абстрактное «хочу разобраться в устройстве» в конкретное «хочу сделать то и то». Сделать из мечты цель, достижимую и измеримую. Например, для того самого диалога сохранения: «хочу, чтобы диалог самостоятельно запоминал последнюю директорию». Это вполне конкретная, достижимая цель. На вопрос «достиг ли ты цели?» ты всегда можешь ответить да или нет.

опыта

А опыт от возраста слабо зависит.

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

Эта «управляющая логика» управляла чем?

Всем. В том числе и блоком развёртки. Но сам блок был исправен, просто на управляющем входе был сигнал «развёртка не нужна». Не увиливай, ты ошибся. Имей смелость признавать свои ошибки.

Ох,ё...

Ага, да. Что, завидно? :)

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

Зачем, зачем ты пытаешься унизить собеседника? Этим ты только выпячиваешь свои комплексы. Комплексы есть у всех. Все и у всех. А ещё есть механизмы психологической защиты. Среди них — отрицание и проекция.

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

То, что ты называешь целью, остальные в этой нити называют мечтой.

Предположим, что ты - действительно физик. Тогда давай определяться с конкретикой:

1). «остальные» - это кто и сколько в численном выражении?

2). Приведи ссылки, где эти остальные называли «возможность» разобраться с устройством gtk - мечтой?

3). Кто тебе дал право говорить и резюмировать за «всех» (кто такие эти «все»)?

Под целью чаще всего понимаются определённые достижимые и измеримые понятия.

Ты считаешь, что на земле нет людей, разбирающихся в устройстве gtk?

Потому что достичь того, что ты называешь целью, нельзя.

Если ты не в состоянии разобраться, то почему ты решил, что у другого не получится? Ты что, «всем» завидуешь по-жизни?

Применительно к конкретному вопросу — всегда останется что-то в GTK+, чего ты не понимаешь.

У меня нет цели понять «что-то». У меня есть конкретная цель - понять устройство gtk.

Тебе пытаются помочь, облачив абстрактное «хочу разобраться в устройстве» в конкретное «хочу сделать то и то»

Мне не надо «пытаться помощь», мне нужна схема если она есть. Если ты уверен, что её нет в природе - подпишись под этим утверждением своим добрым именем и я закрою топик.

А опыт от возраста слабо зависит.

У душевнобольных - да.

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

Зачем, зачем ты пытаешься унизить собеседника?

Я не пытаюсь тебя унизить. Тебе это только кажется. Это сбой в твоём восприятии, мысль улавливаешь? Поясню.

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

Всем. В том числе и блоком развёртки.

Ну, и?

Но сам блок был исправен, просто на управляющем входе был сигнал «развёртка не нужна».

Так сигнала на кадровую не было, так?

Не увиливай, ты ошибся. Имей смелость признавать свои ошибки.

В чём?

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

«остальные» - это кто и сколько в численном выражении?

Приведи ссылки, где эти остальные называли «возможность» разобраться с устройством gtk - мечтой?

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

Кто тебе дал право говорить и резюмировать за «всех» (кто такие эти «все»)?

Я взял эту ответственность на себя сам. Если кто-то из остальных сочтёт нужным возразить, пусть сделает это.

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

В чём?

Блок развёртки исправен. Без разницы, был сигнал на его входе или нет. В этом и есть суть: нужно найти причину неисправности. Созерцание схемы тут тебе не поможет. Нужен либо осциллоскоп, либо вольтметр.

Я не пытаюсь тебя унизить. Тебе это только кажется.

Это бесчестно.

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

Мной движет желание помочь,
ну это такой глюк в человеческой психике,

Зачем ты говоришь в разделе development про свою психику и свои желания? ЗАЧЕМ? Речь идёт о gtk. Что тебе непонятного из того, что я сейчас написал?

Еще раз. Ты ведешь разговор о (!) себе и своей психике. Зачем?

Я взял эту ответственность на себя сам.

Это не ответственность, а право. Тебе такого права пользователи ЛОРа не делегировали.

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

Ты ведешь разговор о (!) себе и своей психике. Зачем?

Ты же ведёшь разговор обо мне. Я поддерживаю.

в разделе development

Ну и что ты разрабатываешь? :)

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

Тебе такого права пользователи ЛОРа не делегировали

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

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

Блок развёртки исправен.

Давай заново. Ты говоришь: «на экране горизонтальная полоса», так?

Касательно дефектовки, если не экране горизонтальная полоса, то (! внимание) модуль развёртки работает или нет (не идёт речь о том, исправен/неисправен)? Просто, работает или нет?

В этом и есть суть: нужно найти причину неисправности.
Созерцание схемы тут тебе не поможет.

Нужен либо осциллоскоп, либо вольтметр.

Если у обезьяны в руках будет Аджилент или Флюк, убьётся ли она померив 12кВ на аноде?

Это бесчестно.

Я тебе правду сказал. Не имею против тебя лично вообще ничего.

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

«Слои абстракции нам не нужны, высокоуровневое всё нам не нужно, Турьянмаа наш б-г»?

Лол. :)

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

Просто, работает или нет?

Нет, пройди по ссылкам на моё сообщение. Я сказал «сбоит», а не «не работает». Пытаешься мои слова подменить?

Я тебе правду сказал. Не имею против тебя лично вообще ничего.

Если заказать лингвистическую экспертизу твоих слов (например, для суда), огромные шансы на то, что в заключении будет сказано, что ты меня оскорбил, указав на наличие «комплекса неполноценности» (и, кстати, неважно, есть он или нет :) ). В этом случае тебя сможет спасти лишь диплом психолога (или психотерапевта) и наличие активной практики. Тогда это можно будет назвать профессиональным мнением.

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

Нет, пройди по ссылкам на моё сообщение. Я сказал «сбоит», а не «не работает».

В очередной раз повторяю, что не о тебе речь и не о том как ты и что сказал. Давай без эмоций, по фактам.

Не работает телек - на экране гор. полоса. Факт?

Если заказать лингвистическую экспертизу твоих слов

Я вторично повторю, что я - не лингвист.

огромные шансы на то, что в заключении будет сказано, что ты меня оскорбил, указав на наличие «комплекса неполноценности»

Ты в Омерике живёшь? Что тебя еще оскорбляет? Приведи весь список, чтобы не обздаться в последствии. Слово «море» не вызывает гнева? Или вызывает? А слова: «мнение», «точка зрения», «опыт», «удобно», «неважно», «по-своему»?

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

Ты уже со всеми разругался.

Я запамятовал, подскажи, сколько пользователей ЛОРа в цифрах? Хотя бы порядок? 10, 50, 100, 1000, 10000?

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

Он натурально думал, что это мужик (на аватарке). Как его угораздило, я уж и не знаю. :) Бывает. Надеюсь, что авку поменяет. :)

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

Я не думал, я знал, более того, я специально кадр подбирал «поженственнее».

Давай уточним, я правильно тебя понял, что на «фотке» - мужик?

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

На ваших же ссылках написано: «Женская форма Ранмы Саотомэ. Используется персонажем, наравне с мужской»

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

Тренируясь с отцом в Китае в «Долине проклятых источников», Ранма свалился в один из проклятых источников, после чего стал время от времени находиться в женской форме.

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

Обожаю творчество госпожи Румико.

Удваиваю.

Boboms, i-rinat

Спасибо, мужики, доставили. )))

LamerOk ★★★★★
()

Подробной графической схемы взаимосвязей всех уровней gtk скорее всего нет.

Самое грамотное и адекватное описание исходников gtk - это сами исходники gtk.

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

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

Подробной графической схемы взаимосвязей всех уровней gtk скорее всего нет.

Да, я тоже к этому склоняюсь. А с Qt та же ситуация?

Самое грамотное и адекватное описание исходников gtk - это сами исходники gtk.

Это понятно, да.

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

Так и придётся сделать.

ЗЫ: Эх, чёто жалко тред закрывать, так славно пообщались... :))))

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

А с Qt та же ситуация?

С графической схемой, думаю, да. По Qt значительно больше хорошей текстовой документации, нацеленной, правда, на пользователей библиотеки, но охватывающей ключевые архитектурные моменты и концепты, по которым можно составить общее представление о реализации, при наличии определенного объёма знаний, разумеется.

Правда, с точки зрения изучения потрохов сам Qt достаточно монструозен, gtk должен быть попроще.

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

Правда, с точки зрения изучения потрохов сам Qt достаточно монструозен, gtk должен быть попроще.

Пока еще не понимаю почему, но «душа лежит» в сторону gtk. Хотя Гномовцы с Гномом3 падлу конкретную подкинули.

Дивлюсь, неужели только у Мозиловцев хватило упорства придумать current и ESR?

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