LINUX.ORG.RU

Tkd — кроссплатформенный GUI тулкит для D

 , , ,


0

5

Каждый программист, который писал приложения на таких языках как Perl, Ruby или Python, знает о существовании графического тулкита Tk. Tk обязан своей популярностью тем, что позволяет быстро и просто создавать графические приложения. Во многом именно благодаря этому тулкиту Python получил такое широкое распространение.

Сегодня программист из комьюнити D Gary Willoughby анонсировал порт тулкита Tk на язык D. Порт носит название Tkd. Ключевой особенностью Tkd является полная совместимость с документаций от оригинального Tk.

>>> Подробности

★★

Проверено: mono ()

Каждый программист, который писал приложения на таких языках как Perl, Ruby или Python знает о существовании графического тулкита Tk.

О существовании, возможно, и знает, а вот с

популярностью

это ты погорячился.

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

В связи с потенциальным выпилом GTK2 популярность может возрасти. Тем более, там уже темизация поддерживается. Приложений сейчас хоть и мало, но они реально крутые.

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

Поясни по поводу выпила и его причин плиз.

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

Выросла, у Qt. А Tk мёртвое уже давно.

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

GTK поддерживает GNOME Foundation. А они упоролись и тянут одеяло в свою сторону, в т. ч. и тулкит. GTK3 во многих аспектах проигрывает GTK2, но GTK2 теперь deprecated и ещё держится в дистрибутивах только по причине большого количества на нём, но и так он долго не протянет. Выхода два - переводить софт на другой тулкит (GTK3/Qt/Tk/EFL/FLTK/etc) либо форкать GTK2, как это сделали с GNOME 2 - но это уже будет другой тулкит с другим названием.

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

Qt - жирное говно с иными парадигмами разработки, иной схемой лицензирования и зацикленностью на объектно-ориентированном подходе C++. GTK2 он уж точно не альтернатива. Tk же потихоньку развивается, равно как и софт на нём.

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

Такого количества 4.2 в куче ещё не было :}

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

Так ты уже прокукарекал, что тут писать то. Если уж тебе даже LGPL и ООП не нравятся, то я даже и не знаю. Но это у GTK'шников всегда так. Любят они писать для десктопа на языке ядра.

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

LGPL

Оно под двойной лицензией. И может в любой момент под свободной перестать распространяться.

ООП

объектно-ориентированном подходе C++. Их чуть менее чем дохрена, почти у каждого языка свой. Qt заточен жёстко на сипипишный, с контролем доступа, ручным уничтожением объектов и пр. Биндинги для других языков черезжопны.

Любят они писать для десктопа на языке ядра.

Ты о C? Так оно ж говно мамонта, только безальтернативное. Вон Мозилла замену пилит, но когда оно будет готово и взлетит ли, ещё неизвестно. В юзерспейсе, впрочем, всё равно не нужно.

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

Оно под двойной лицензией. И может в любой момент под свободной перестать распространяться.

Как только оно перестает под свободной распространяться, так сразу выходит под лицензией BSD от KDEшников. Оно защищено, успокойся.

Qt заточен жёстко на сипипишный, с контролем доступа, ручным уничтожением объектов и пр.

К уничтожению объектов у Qt свой подход, ни разу не ручной.

keyran ★★ ()
Последнее исправление: keyran (всего исправлений: 1)

Tkd — кроссплатформенный GUI тулкит для D

Вырвиглазный интерфейс - теперь и для D!

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

объектно-ориентированном подходе C++. Их чуть менее чем дохрена, почти у каждого языка свой. Qt заточен жёстко на сипипишный

Ну а в GTK весь ООП на С, причём из разряда «как делать не нужно». Который:

1) весь течёт как сучка на случке (пишем код который тупо вызывает gtk_init и завершается; собираем; запускаем под valgrind; смотрим результаты и тихо плачем);

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

3) собран из кое-как слепленных между собой разнородных кусков (GTK/Gdk/Atk/Pango/допиши);

4) невероятно доставляет своим API в духе «gtk_give_me_something_really_cool_and_suck_my_dick()»;

anonymous ()

И главное - в новости ни слова про Tcl!

Quasar ★★★★★ ()

Каждый программист,..., знает о существовании графического тулкита Tk, который выглядит как привет из 90-х и совершенно никому не нужен и популярных программ на нем нет.

fixed

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

весь течёт как сучка на случке

Анонимус не знает о slice аллокаторах и G_DEBUG. Не зная броду...

GLib и GTK хорош интроспекцией и биндинги есть в любом маломальски востребованном языке. Чего не скажешь о Qt. С появлением интроспекции биндинги теперь автоматические. В связи с этим действительно использование TK выглядит странным.

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

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

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

GTK3 во многих аспектах проигрывает GTK2

А можно подробнее? Что можно сделать на 2 и нельзя (или сильно сложнее) на 3?

monk ★★★★★ ()

Каждый программист, который писал приложения на таких языках как Perl, Ruby или Python, знает о существовании графического тулкита Tk.

О да, гуй начинается с Tk! Сам когда-то на нём делал кое-что с перлом.

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

И главное - в новости ни слова про Tcl!

Несправедливое упущение - забыть о первоисточнике !

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

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

А нераспростренён по одной причине - перед присаживанием за клавиатуру поменьше надо травки курить да падко маятся между монстрообразными современными средами разработки (Eclipse и прочей муйни).

Инструмент программиста - это текстовый редактор.

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

Уродливо же. Там есть возможности для кастомизации? В каких пределах?

Weres ★★★ ()

D

Чем это поделие лучше лиспа?

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

ручным уничтожением объектов

Вали назад в свой курятник, петушок.

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

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

Мне однажды интроспекция помогла в очень необычном деле - поддержка GTK в cppcheck.

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

P.S. Я несправедливо умолчал про D-Bus, но D-Bus всё же IPC, а не вавилонский ООП. D-Bus позволяет сделать то же самое, но было бы странно через него GUI рисовать.

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

А Tk мёртвое уже давно.

Оно живо благодаря либо очень бородатым дядькам, либо учёным. Просто о таком софте не слышно на каждом углу. gitk из известных, вот и всё.

Выглядит подобающе, что внутри что снаружи. Особенно «радует» такой интерфейс на какой-нибудь ретине. А если сделать шрифт покрупнее - от Win 8 не отличишь.

Но что интересно, если делать список на 200 тыс. элементов, то какой-нибудь GTK или Qt просто ляжет, а тут - запросто, никаких вам иконок или Model-View.

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

Ну а в GTK весь ООП на С

В C никакого ООП нет, он навелосипеден и поэтому более-менее хорошо используется в любом языке.

пишем код который тупо вызывает gtk_init и завершается; собираем; запускаем под valgrind; смотрим результаты и тихо плачем

А ты хотел, чтобы оно проинициализировалось и сожрало 0 рамы? Это сильнейший удар по кэшированию, который только можно придумать. Пример высосан из пальца, короче.

недокументирован чуть более чем полностью

Напиши сам (c) Люди проприетарщину реверс-инжинируют как орешки, а он боится потестить, что и когда функция возвращает...

собран из кое-как слепленных между собой разнородных кусков (GTK/Gdk/Atk/Pango/допиши)

Это же хорошо: не нужен какой-то компонент - не тащи.

невероятно доставляет своим API

Нормальное API, не гони.

MiniRoboDancer ★☆ ()

Теперь я видел все.

Ждём wxwidgets на брейнфаке

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

так сразу выходит под лицензией BSD от KDEшников

Когда Qt начнут поддерживать KDEшники, его можно будет уверенно закопать сразу, ибо они сделают из него ещё более жирное прибитое к kdelibs говно.

К уничтожению объектов у Qt свой подход, ни разу не ручной.

Это деструкторы-то - не ручной подход?

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

Вырвиглазный интерфейс - теперь и для D!

хва смешить! :) Ну ужасный, что с того? Ди - у него вообще с гуями полная гуйня, так что лишний тулкит не повредит. А учитывая простоту построения (даже кодом), для тысяч перделок вполне подойдёт.

да ну :-) htt... по моему все нормально.

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

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

Легковесный профессиональный десктопный софт. GTK3 заточен под приложения с примитивным интерфейсом и мышевозно-пальцетыкательным-управлением; варганить десктопную классику пока ещё можно, но костыльность возрастает, да и жирнота тулкита.

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

Ну вот ненадо, win2k-стиль намного аккуратнее, чем tk и даже местами чем gtk

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

Когда Qt начнут поддерживать KDEшники, его можно будет уверенно закопать сразу, ибо они сделают из него ещё более жирное прибитое к kdelibs говно.

kdelibs 5 отличается от четвертых тем, что разбито на множество модулей. Это раз. И уж в руках KDE ему будет явно лучше, чем в руках Дигии, которой сообщество, в целом, параллельно. У них бизнес.

Это деструкторы-то - не ручной подход?

В Qt деструкторы вызываются неявно родителями объектов. Учи матчасть.

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

GTK3 заточен под приложения с примитивным интерфейсом и мышевозно-пальцетыкательным-управлением

Мне покаалось, что кроме стилей на CSS всё остальное практически не поменялось. Ну и настройка (темы) другие, но это на программный код не влияет.

да и жирнота тулкита

monk@veles:/usr/lib/i386-linux-gnu$ ls -l libgtk-*so*
lrwxrwxrwx 1 root root      20 апр 26 22:20 libgtk-3.so -> libgtk-3.so.0.1200.1
lrwxrwxrwx 1 root root      20 апр 26 22:20 libgtk-3.so.0 -> libgtk-3.so.0.1200.1
-rw-r--r-- 1 root root 5713728 апр 26 22:21 libgtk-3.so.0.1200.1
lrwxrwxrwx 1 root root      27 апр  4 22:05 libgtk-x11-2.0.so -> libgtk-x11-2.0.so.0.2400.23
lrwxrwxrwx 1 root root      27 апр  4 22:05 libgtk-x11-2.0.so.0 -> libgtk-x11-2.0.so.0.2400.23
-rw-r--r-- 1 root root 4645652 апр  4 22:05 libgtk-x11-2.0.so.0.2400.23

5,7Мб против 4,6Мб. Не так сильно и вырос. Для сравнения

monk@veles:/usr/lib/i386-linux-gnu$ ls -l libQtGui.so*
lrwxrwxrwx 1 root root       17 мар 11 02:37 libQtGui.so -> libQtGui.so.4.8.6
lrwxrwxrwx 1 root root       17 мар 11 02:37 libQtGui.so.4 -> libQtGui.so.4.8.6
lrwxrwxrwx 1 root root       17 мар 11 02:37 libQtGui.so.4.8 -> libQtGui.so.4.8.6
-rw-r--r-- 1 root root 11210780 мар 11 02:40 libQtGui.so.4.8.6
Так что расти ещё есть куда.

но костыльность возрастает

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

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

Приложений сейчас хоть и мало, но они реально крутые

например?

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

Любят они писать для десктопа на языке ядра.

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

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

Да, биндингов к ненужно у них много.

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

если делать список на 200 тыс. элементов, то какой-нибудь GTK или Qt просто ляжет

Только что проверил: Gtk3 + SBCL (Common Lisp) — прочитал в GtkTreeView 862119 записи из классификатора адресов по РФ. Интерфейс не тормозит, скроллинг, изменеие размеров окна — всё ок.

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

Но что интересно, если делать список на 200 тыс. элементов, то какой-нибудь GTK или Qt просто ляжет

теоретик-фантазер детектед

wota ★★ ()

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

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

Gtk3 + SBCL (Common Lisp)

Какой-то новый биндинг через GIR?

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