LINUX.ORG.RU
ФорумTalks

[ССЗБ] Какое же говно это наше GTK

 


0

3

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

Архитектурно оно представляет какое-то совершенно нелепое нагромождение классов, недоделанных недоабстракций и длинных списков deprecated функций. Нормального механизма обмена сообщениями между компонентами нет. Декомпозиции на абстрактные интерфейсы не прослеживается.

Компоненты зачем-то разбиты на две группы - оконные и безоконные - между которыми, пролегает такая хорошая, качественная железобетонная стена. Можно даже побиться об неё головой. Вместо того, чтобы на уровне архитектуры дать возможность любому компоненту работать как в отдельном под-окне, так и в окне родителя, предлагаются танцы с бубном EventBox.

Средства для кустомизации компонент наследованием находятся в зачаточном состоянии, а для кустомизации тонкой настройкой в рантайме - и вовсе в противозачаточном. Часть компонент нуждается в разбиении на субкомпоненты, например, ужасный GtkNotebook. Часть компонент просто написана задней лапой. Исходники производят полное впечатление, что перед нами не универсальный тулкит, на котором работает чертова уйма гуёв, а всё тот же костыльный набор виджетов для GIMP-а.

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

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

кому может понадобиться его портировать?

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

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

>>ну нарисовали вы в Qt-designer'е интерфейс

ССЗБ.

обоснуй.

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

Чем меньше «абстракций», тем лучше работает.

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

Reset ★★★★★
()

Ты не поверишь, абстрактные интерфейсы там таки есть. И даже классы являются объектами, да!

Про обмен сообщениями - сигналы со слотами ниасилил чтоли?

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

> Ты не поверишь, абстрактные интерфейсы там таки есть.

Нету там нихрена. Покажи мне абстрактный интерфейс «выбор одного из N вариантов», который можно специализировать в комбобокс, переключалку пунктов меню или набор табов. Впрочем, в прочих тулкитах с этим тоже не густо, но это не делает gtk менее говном.

Про обмен сообщениями - сигналы со слотами ниасилил чтоли?

Кому и коза невеста. Глибовским сигналам до нормального message passing-а как до Китая.

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

Все там нормально с архитектурой обработки событий

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

>Покажи мне абстрактный интерфейс «выбор одного из N вариантов», который можно специализировать в комбобокс, переключалку пунктов меню или набор табов.

Ты страдаешь овердизайном :)

И всё таки они существуют, правда в несколько ином виде:

GtkTreeModel is implemented by GtkListStore, GtkTreeModelFilter, GtkTreeModelSort and GtkTreeStore.

GtkComboBox implements AtkImplementorIface, GtkBuildable, GtkCellLayout and GtkCellEditable.

Кому и коза невеста. Глибовским сигналам до нормального message passing-а как до Китая.

Отлично. Может ещё сможешь и преимущества message passing'а над сигналами-слотами назвать? Ну так, чисто для галочки

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

Если сравнивать с кутями, то GTK - прелесть

не согласен. у меня совсем обратное впечатление.

true_admin ★★★★★
()

// весь тред не читал
А что тебя сподвигло на написание своего таскбара и что он будет уметь, чего не умеют уже существующие?

P.S. Некоторое время назад основатель проекта «таскбара» - DockBarX. Для таскбара Gtk вполне хватает.

ls-h ★★★★★
()
Ответ на: комментарий от different_thing

Ну либо ЦА такая, что кроме C++ ничего не нужно:)


Не либо а именно такая. Кроме 3.5 регистратов вопящих про то что они знают людей(!) пищущих под qt не на c++.

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

Вы всё ещё пишете на этом устаревшем гумне мамонта под названием C или С++?

fixed

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

Я на всём пишу. В том числе на чистых Сях в OO стиле. Поэтому какой это кошмар я знаю на своей шкуре.

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

Я на всём пишу. В том числе на чистых Сях в OO стиле. Поэтому какой

это кошмар я знаю на своей шкуре.


На всем это на чем? А то ходят тут люди которые знают много страшных языков, но в реальности пишут на двух. На одном им нравится писать, это C++ + qt, а на другом очень не нравится - это вот C с объектами.

C с обьектами в случае gtk это системный язык. Нужен для того что бы писатели на других язвыках радовались жизни :D

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

На всем это на чем?

В данный конкретный момент в текущем проекте на Си, перле и схеме.

Reset ★★★★★
()

Очень хорошо. Уносите ТСа.

lester_dev ★★★★★
()
Ответ на: комментарий от ls-h

> А что тебя сподвигло на написание своего таскбара и что он будет уметь, чего не умеют уже существующие?

Просто допиливаю lxpanel taskbar под собственные нужды.

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