LINUX.ORG.RU

Что «лежит» под тулкитами вроде GTK, Qt и пр.?


0

1

Бодрое время суток. Возникла тут внезапно нужда накидать собственный тулкит под *никсы для всяких кнопочек, ползуночков, рюшечек и финтиплюшечек, естественно не отличающийся сложностью, и исключительно ради своих собственных корыстных и весьма специфичных целей. И сразу возник вопрос - как? Вернее не «как», а скорее «на чем». Смелости лезть в недры исходников Qt и GTK в себе не нашел, поэтому спрашиваю - как и с помощью чего они отрисовывают свои контролы на *никсовых системах? Напрямую через сообщения к иксам? Или какой-нибудь Cairo используют? В случае с общением напрямую с Иксами, существует ли какая-нибудь подробная документация как с ними работать? В качестве ответа на последний вопрос приму пинок в сторону конкретной ссылочки на документацию, ибо Гугль мне внятного ответа не дал, как я не искал.

Заранее спасибо.

P.S. Уж не втаптывайте сильно глубоко если задал глупый или чересчур простой вопрос, сам я по профессии программист 1С, а по призванию - прикладной программист, т.е. всякие Си-Шарпы, Рубины и прочие «гламурные» языки, и только вот недавно решил возмужать да заняться более «приземленным» программированием.


В линуксе и так слишком много тулкитов. Не делай ещё один.

Deleted ()

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

anonymous ()

Xlib. Развлекайся, не забывай выкладывать исходники

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

>В линуксе и так слишком много тулкитов. Не делай ещё один.
s/тулкитов/прослоек.

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

Mystra_x64: Я и не собираюсь, говорю же - для собственных корыстных целей. Анонимус: За совет касательно FLTK - спасибо. Gvidon: Я прекрасно знаю о существовании такой штуковины как Xlib, только вот документации внятной по нему судя по всему не существует, в этом то и проблема.

nate ()
Ответ на: комментарий от xcreatepixmap

Кхм, чувствую себя блондинкой. Спасибо, информации исчерпывающее количество.

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

Передо мной лежит замечательная книжка «Xlib Programming Manual» 1989 года выпуска :) Более свежие варианты в электронном виде гуглятся на раз.

Gvidon ★★★★ ()

Да я честно говоря уже и сам удивляюсь, как я так искал, что ничего не нашел. И, к слову, если верить заверениям разработчиков, XCB пошустрее Xlib'а будет. Так что видимо его и буду использовать, если документацию осилю раньше, чем решусь на смену прфоессии.

nate ()
Ответ на: комментарий от SergMarkov

Либо я жизнь медом возомнил, либо этот Worker еще сложнее чем FLTK, судя по беглому поверхностному изучению исходников и того и другого.

nate ()

Вобщем спасибо всем за помощь, если сделаю что-нибудь, что будет работать, обязательно сообщу и сырцами поделюсь.

nate ()

Ну кину ещё ссылку http://tronche.com/gui/x/ я в основном тут всё смотрел, возможно дублируется с предыдущими ссылками что то. Ещё http://www.freedesktop.org/wiki/Specifications тут очень много стандартов, которые обычно соблюдаются современными приложениями.

Legioner ★★★★★ ()

Смелости лезть в недры исходников Qt и GTK в себе не нашел, поэтому спрашиваю - как и с помощью чего они отрисовывают свои контролы на *никсовых системах?

Ну и зря, что не нашел. Узнал бы, например, про http://library.gnome.org/devel/gdk/stable/

An intermediate layer which isolates GTK+ from the details of the windowing system.

Гораздо проще и симпатичней Xlib'а.

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

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

nate ()

> Возникла тут внезапно нужда накидать собственный тулкит под *никсы для всяких кнопочек, ползуночков, рюшечек и финтиплюшечек, естественно не отличающийся сложностью

Рассчитанный на удобный интерфейс, а также минималистичность?

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

melkor217: Не угадали, пишу тулкит, расчитанный на дико неудобный интерфейс, общее ощущение задротности и устарелости, чем то напоминающий GNUstep. Просто напросто пишу клиент для вконтактика главной бюстгальтерше на работе.

nate ()

Все-таки мне кажется, что самым простым и вполне себе имеющим право на существование вариантом для тулкита является Cairo. Вот по данной ссылочке [http://github.com/tbaugis/hamster_experiments/wiki/tutorial] на питоне описан очень и очень наглядный пример того, что можно сделать с ним. Единственное, что меня заботит касательно кайро - производительность, чую она ниже чем у икслиба. Но зато сразу вам кроссплатформенность, без всяких танцев с бубном. Ах да, ну ивенты ввода, конечно, все равно придется обрабатываться с пом. иксов.

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

но никак не «изолирует» их от GTK

Все верно, потому что надо наоборот.

Смысла в нем не вижу

Ну начинай на голом икслибе тогда, раз море по колено.

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

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

nate ()

>Возникла тут внезапно нужда накидать собственный тулкит под *никсы для всяких кнопочек, ползуночков, рюшечек и финтиплюшечек, естественно не отличающийся сложностью, и исключительно ради своих собственных корыстных и весьма специфичных целей

Очередной велосипед, который так до вменяемого состояния и не доведут? Даром не нужно

Смелости лезть в недры исходников Qt и GTK в себе не нашел

И при этом собрался писать свой тулкит? Школьник чтоли?

как и с помощью чего они отрисовывают свои контролы на *никсовых системах?

В X всё в итоге сводится к иксовым сообщениям.

В случае с общением напрямую с Иксами, существует ли какая-нибудь подробная документация как с ними работать?

Xlib, xcb

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

>Просто напросто пишу клиент для вконтактика главной бюстгальтерше на работе

Для этого хватит обычного GTK

общее ощущение задротности и устарелости

...с соответствующей темой оформления

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

>Даром не нужно

А я вам и не предлагаю

И при этом собрался писать свой тулкит? Школьник чтоли?

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

В X всё в итоге сводится к иксовым сообщениям.

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

Xlib, xcb

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

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

>Я лишь имел ввиду, что от голого икслиба гдк не далеко ушел.

gdk, в общем-то, и есть слой абстракции над иксовыми вызовами/winapi/whatever

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

>Для этого хватит обычного GTK с соответствующей темой оформления

Юмор видимо не детектед. Пишу свой тулкит исключительно для себя, ибо свое *известно что* малиной пахнет.

nate ()
Ответ на: комментарий от yoghurt

>gdk, в общем-то, и есть слой абстракции над иксовыми вызовами/winapi/whatever

Поэтому я и не вижу в нем преимуществ над Xlib/winapi/whatever, а кроссплатформенность мне без надобности

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

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

Не интересовался вопросом, как оно в Linux, но в виндовсе во времена MFC & OWL сел ради интереса писать свой тулкит. Разобраться с существующим тулкитом на порядок менее трудозатратно, чем сделать удачный дизайн и осилить в полном объёме всю линейку виджетов и сопутствующую инфраструктуру.

Даже если просто сесть написать ядро + виджеты под проект (есть и такие проекты в природе у людей), это будет более трудозатратно, чем разобраться с Qt / Gtk / e.t.c. для написания программы.

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

>Даже если просто сесть написать ядро + виджеты под проект (есть и такие проекты в природе у людей), это будет более трудозатратно, чем разобраться с Qt / Gtk / e.t.c. для написания программы.

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

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

nate ()

пиши сразу свои иксы, с картами и женщинами

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

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

nate ()
Ответ на: комментарий от Legioner

http://tronche.com/gui/x/

The GWM [Generic Window Manager] manual

http://tronche.com/gui/x/gwm/html-manual/overview.html

GWM like any other window manager is in charge of all that is exterior to other application windows on the display. It performs its task by decorating the existing windows on the screen with its own windows. The appearance and behavior of these windows are described by the user through programs written in the lisp-like WOOL language, which are interpreted by the built-in WOOL interpreter of GWM.

The GWM Window manager is composed of 2 modules: the window manager itself, GWM, and the lisp interpreter WOOL.

(with (window my-window move-ul (lambda () (move-window 0 0)))
                (move-ul))

        (setq bluegreen '(foreground green background blue))
        (with bluegreen (pixmap-make "Bull"))

аааа... Где ж ты раньше был, до того, как я stumpwm поставил?

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

> общее ощущение задротности и устарелости, чем то напоминающий GNUstep. Просто напросто пишу клиент для вконтактика главной бюстгальтерше на работе.

внезапно, попробуй XCB под винду:

http://xcb.freedesktop.org/win32port/

anonymous ()

Что "лежит" под тулкитами вроде GTK, Qt и пр.?

Годы и годы работы.

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

если просто сесть и написать клиент для вконтактика под венду, можно взять для начала язык D и библиотеку DFL : весьма просто въехать. Правда, оно только под венду, но думается, готовые виджеты портировать под тот же xcb не очень сложно. Под иксы для D есть DWT (устарел), Gtk-D и QtD — более-менее юзабельны. Можно и поискать что-то вроде DFL, только покроссплатформеннее, всякие полузаброшенные GUI toolkits для D.

anonymous ()

Не делай этого.

Скорее всего напрямую через иксы. В венде через винапи, по идее.

Тред не читал.

Zhbert ★★★★★ ()

Спасибо конечно за ссылки и упоминания про всякие D и DFL, но для моих целей подойдет и Cairo в качестве бэкэнда.

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

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