LINUX.ORG.RU

Архитектура опен сурс программ не должна зависеть от GUI-библиотек (gtk, qt и подобные)

 , , , ,


0

3

Появилась у меня мысль. Что программы на открытом исходном коде не должны быть привязаны к какой либо ГУИ-библиотеке. Т.к. положение этих ГУИ-библиотек (и их владельцев) позволяет им диктовать и портить чужие программы. Пример это файловые диалоги открытия и сохранения файлов. Которые намеренно не фиксятся владальцами проекта Gnome. А альтернативные файловые диалоги по простому не прикрутишь. В идеале правильная разработка опен сурс программ должна вести по архитектуре без привязки к какой либо ГУИ-библиотеки. Типа написание бакенда отдельно от фронтенда. Большинство программистов этого не понимают и создают будущие проблемы для своих программ. Или в линуксе должна быть какаята прослойка между программами и гуи-библиотеками. Хотя есть Wxwidgets. А Wxwidgets поддерживает только С++. Но должно быть чтото более универсальное. Поддерживающее все языки (большинство популярных).

К подобным плохим библиотекам также относятся DE-библиотеки такие как Gnome, KDE. Которые обманчивао создают иллюзию упрощения разработки програм. Но в результате привязывают программиста к своим ГУИ-библиотекам. Примером является хорошая программа Ktorrent которая теперь сильно привязана к KDE.

А вы что думаете ? Я прав или нет ?

Какие ещё средства существуют для написания программ не привязанных к одной ГУИ-библиотеке ? Чтобы не было типа как вендорлока.

Поведение ГУИ библиотек напоминает мне поведение проприетарщиков с их вендор локом.

Привязка к поставщику (англ. vendor lock-in, proprietary lock-in, customer lock-in, «барьер для смены поставщика») — бизнес-модель, в которой устанавливается зависимость потребителя от продуктов и услуг одного поставщика, намеренно создаются осложнения для смены поставщика из‑за высоких затрат на переход.

Поставщики заинтересованы намеренно создавать замыкание для завоевания большой доли рынка, что иногда приводит к появлению монополии и «стандартов де-факто».

https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%B8%D0%B2%D1%8F%D0%B7%D0%BA%D0%B0_%D0%BA_%D0%BF%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D1%89%D0%B8%D0%BA%D1%83

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

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

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

kde самое вредное de ядовитое и вороватое , вороватое в смысле того что как только они увидят что копипастить под форк под другим именем это пц , почему не кде ? По простой причине они же кутешники в одной связке не захотели сидеть на qt4 зачем то сделали подлянку изменив libpng12 на 16 версию в ходе чего отпали более старые программы таким образом что перестали запускаться.

anonymous
()

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

Но в результате привязывают программиста к своим ГУИ-библиотекам

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

Которые намеренно не фиксятся владальцами проекта Gnome

А что с ними не так? Во-первых, может статься что проблема в тебе. Во-вторых, что бы ты там не хотел, кто мешает пропатчить локально всё что тебе надо?

Но так-то да, держаться подальше от гномосятины до сих пор не слезшней с выродка C на божественные плюсы, и имеют своё особое мнение на то каким должен быть GUI имеет смысл держаться подальше.

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

Как думаете, анонiмус это или нет? Неужели вернулся?

Это он. Временно выписали, прекратил пить таблетки. Вот честно, мне не смешно, я знаю таких ИРЛ

I-Love-Microsoft ★★★★★
()
Ответ на: комментарий от I-Love-Microsoft

А что конкретно не так? Слишком много информации?

xtouqh
()

Примером является хорошая программа Ktorrent которая теперь сильно привязана к KDE.

Ой, а что будет если возьму и запущу Ktorrent в гноме? Подсказка - ничего особенного, он запустится

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

Но таким образом ты нарушаешь тулкитовую чистоту!!111

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

если переход на новую версию тулкита (а не с тулкита на тулкит) - такой затратный по человекочасам, почему же все не сидят первой версии gtk?

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

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

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

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

Если, наоборот, это (например) распознавалка изображений с прошаренными алгоритмами — да, однозначно имеет смысл выделить ядро, отвязанное от GUI.

Есть и другой случай: Gnumeric. Всё указывает на то, что наименее похабным вариантом было бы создание сишной мат.библиотеки и какой вздумается «морды». Но нет. «Спецы» из команды gnumeric насквозь прошили математические (МАТЕМАТИЧЕСКИЕ!) функции своим г. Вопрос очевиден: Нафига?!

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

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

Дядь, тебе никто ничего не должен. Этот продукт пишут не для тебя и часто бесплатно в свое свободное время.

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

Конкретно по примеру: я не знаю, почему в Gtk идиоты ваяют public API, так как такие переименования у них сплошь и рядом, но уж лучше переименовать, чем рыскать по документации в поисках нужной функции и гадать, как же ее назвали. Кроме того, это перекат мажорной версии, без немногого 10 лет прошло. Напомню, Gtk 3.0 выпустили в 2011.

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

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

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

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

Переименовывайте, только старый вариант оставьте.

Зачем? Раз в десятилетие совместимость можно и нужно ломать, чтобы не нарастала гора мусора.

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

чтобы не нарастала гора мусора

Нет там никакой горы мусора, всякие новомодные JS/CSS (зачем они в тулките?) на порядки больше места занимают. Минимальные сборки Windows (Windows Preinstallation Environment со всяким Legacy в 256 МБ влезают.

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

В винде старый WinAPI по 20 лет работает.

Винда за 20 лет концептуально никак не поменялась. Десктоп на линуксе 20 лет назад и сейчас – две большие разницы.

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

Этот продукт пишут не для тебя и часто бесплатно в свое свободное время.

Это гном-то пишут бесплатно и в свободное время?

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

Десктоп на линуксе 20 лет назад и сейчас – две большие разницы.

Нет в десктопе никакой принципиальной разницы со времён Mac OS Classic, а может даже Xerox Star (1981). Тулкиты никак не мешают делать новые оболочки, доки и т.п. Можно и на WinApi написать DE, что от GNOME 3 не отличишь.

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

Переименовывайте, только старый вариант оставьте.

Старый вариант не всегда осмысленен в рамках новой архитектуры. Скажем, сделали вместо стилей в виде ключ-значение поддержку CSS. И что должна делать функция установить_значение_стиля(элемент, ключ)? Или сделали внутренним представлением текста со стилями HTML вместо своего велосипедного формата. Теперь обязаны предоставить конвертер произвольного HTML в тот велосипедный формат и обратно (ведь были функции чтения и записи из него)?

Или держать все подсистемы какие были, как в Microsoft WinAPI, где кодировка строки зависит от функции, которую используешь и каждый файл имеет по два имени?

И самое главное, старый вариант ведь никуда не делся. Он по прежнему доступен в Интернете под старым номером версии.

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

Нет там никакой горы мусора

Поэтому ее и нет. Даже на голимый deprecated дается довольно много времени. Чай, раз в пару лет можно и sed’ом прогнать.

всякие новомодные JS/CSS (зачем они в тулките?)

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

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

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

Тролль детектед. Давай обосновывай вот эту ерунду:

gtk_widget_modify_font () -> gtk_widget_override_font () -> gtk_text_view_set_monospace ()

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

Десктоп на линуксе 20 лет назад и сейчас – две большие разницы.

Дыыыааа?! И в чем же большая разница? Как не работал {star,open,libre}office нормально, так и не работает. Как был зоопарк тулкитов, так и остался; еще прибавился. Как ломали совместимость постоянно, так и ломают.

Или новый вид кнопочек – это «большая разница»? Или панельку из угла в угол перетащили? Как же вы ведетесь на это буллшит.

Или вот эта наркомания?

Так даже эта наркомания не имеет отношения к тулкиту.

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

Чай, раз в пару лет можно и sed’ом прогнать.

А ты заплатишь? Ну, лично из своего кармана?

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

У разработчиков есть личная жизнь, они не ваши рабы.

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

Тролль детектед.

Приплыли.

Давай обосновывай вот эту ерунду:

monk все отлично расписал чуть выше. Но давай, поехали.

Начнем с того, что все эти варианты хотя и deprecated, но сохранены в библиотеке, и будут выпилены лишь в Gtk 4.0. Далее, gtk_widget_modify_font шрифт никак не модифицирует и не изменяет. Еще один пример идиотского названия от Gtk. Чем они думали – неясно. Следующий вариант, gtk_widget_override_font, уже лучше, и в целом-то всех устраивал, но зачем он нужен, когда он делает ровно то, что должно делаться через темки? Наконец, зачем ты привел пример gtk_text_view_set_monospace, я вообще не понимаю. Эта функция к шрифтам имеет очень опосредованное отношение, а именно запрашивает по возможности использовать моноширинный шрифт в GtkTextView. Она ни в коем случае не является заменой предыдущей.

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

Почему-то страдают хернёй и ломают API разработчики на зарплате, а тратить своё личное время должны те самые энтузиасты СПО.

Нет, ребята. Им там платят за то, что они имитирую прогресс, а мне никто не платит за СПО.

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

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

У разработчиков есть личная жизнь, они не ваши рабы.

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

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

Не верну. Старые версии никуда не деваются, если уж совсем времени жалко.

А ты заплатишь? Ну, лично из своего кармана?

С удовольствием заплачу за обновление нужной мне программы, либо обновлю сам.

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

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

Для того этот код бесполезный -> для отдела маркетинга корпораций?

Если код компилируется, работает и решает задачу, то он не бесполезный.

А почему бы за деньги и не поддерживать «старый код»? Вы же там профессионалы, не? Вы получаете деньги за свой продукт. Работа – это НЕ личная жизнь. Тупая подмена понятий.

Ты пишешь бессодержательные фразы вместо ответов. Ощущение, что разговариваю c ботом.

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

Замена прошлой – GtkStyleProvider и темки. Делаешь для виджета отдельное имя и в .css задаешь стиль. Все.

Да-да. Пишешь простыню кода и тестируешь, что ничего не отвалилось и не сегфолтнулось, в КАЖДОМ приложении, где была использована эта функция.

А если у меня ИЗ ПРИЛОЖЕНИЯ надо задавать шрифт, то пилишь отдельный класс виджета со своим отдельным gtk_my_widget_override_font () и снова тестируешь как му^Wдурак всё это.

Писать «зачем он нужен, когда он делает ровно то, что должно делаться через темки?» может только человек, который никогда не писал реальных приложений, в которых оч часто НУЖНА эта функция.

Чем эта диверсия принципиально лучше диверсии Digital Ocean? На хактоберфесте кроме спама в PR хотя бы встречаются годные патчи, а это тупо DoS-атака на прикладных программистов со стороны RH.

Я думал, что тулкиты нужны, чтобы упрощать разработку, а не чтобы мешать ей.

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

Если код компилируется, работает и решает задачу, то он не бесполезный.

Какую задачу он решает?

Для того этот код бесполезный -> для отдела маркетинга корпораций?

Ну да. Пойми, я не говорю, что выкидывать код это хорошо, и все так и должно быть – это не хорошо, линуксу (бсдям, …) нужен стабильный десктоп. Я не говорю, что это плохо – для того, чтобы пользователи библиотеки могли расслабиться, должны будут пахать разработчики этой библиотеки. Это нормально – одни пытаются спихнуть усилия на других. Ты сейчас возмущаешься как пользователь, это вполне понятное и обоснованное возмущение. Но и у разработчиков Gtk тоже есть свои причины, в том числе трата денег на поддержку бесполезного для отдела маркетинга кода. Они тоже люди, и их причины также можно понять.

А почему бы за деньги и не поддерживать «старый код»?

Отвечу цитатой.

А ты заплатишь? Ну, лично из своего кармана?

Вот только цена мелкого рефакторинга программы меньше цены постоянной поддержки кода библиотеки.

Ты пишешь бессодержательные фразы вместо ответов. Ощущение, что разговариваю в ботом.

И снова приплыли.

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

Следующий вариант, gtk_widget_override_font, уже лучше, и в целом-то всех устраивал, но зачем он нужен, когда он делает ровно то, что должно делаться через темки?

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

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

поддерживая тонны старого и бесполезного кода?

Покажите альтернативу GMapCatcher которая умеет скачивать тайлы карт и показывать их без интернета (интернет в горах не ловит)?

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

Вот только цена мелкого рефакторинга программы меньше цены постоянной поддержки кода библиотеки.

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

Делать говно за большие деньги может любой дурак. Открой любой сайт объявлений и вызови любого мастера по чему угодно – проверь, дурак он или знает свое дело. И если дурак, спроси, почему он занимается работой, в которой ничего не понимает. Услышишь те же отговорки: любая работа достойна оплаты, нужно на что-то жить т.п.

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

Да-да. Пишешь простыню кода и тестируешь, что ничего не отвалилось и не сегфолтнулось, в КАЖДОМ приложении, где была использована эта функция.

Да нет никаких простынь кода, господи.

Там дифф элементарный.

// один раз на старте
auto provider = Gtk::CssProvider::create();
auto display = Gdk::Display::get_default();
auto screen = display->get_default_screen();
provider.load_from_path("file.css");
Gtk::StyleContext::add_provider_for_screen(screen, provider, GTK_STYLE_PROVIDER_PRIORITY_USER);
// вместо каждого override_font
widget.set_name("custom_name");
/* в file.css */
#custom_name {
    background-color: green;
    color:                      yellow;
}

а это тупо DoS-атака на прикладных программистов со стороны RH.

Я разве спорю с этим?

Я думал, что тулкиты нужны, чтобы упрощать разработку, а не чтобы мешать ей.

Для RH они упрощают разработку. Сомневаюсь, что вы платите RH за Gtk/GNOME. Я, например, не плачу – и считаю достаточно справедливым необходимость платить своим временем за труд других, которым пользуюсь.

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

RH не просто шлёпает новые библиотеки. Существует целая культура, которая «давай, давай, обновляйся! переписывай свой код на новую версию XYZ! что это за говно мамонта осталось? Вот-вот выкинут из дистрибутива! приложение не релизилось 4 месяца, наверное оно сдохло!» и т.п.

И в этой культуре индустрия пожирает сама себя уже много лет подряд.

А возьми что угодно – накатить Linux 2010-го года и не заметить разницы. Столько же багов, столько же фич.

За последние годы развилась контейнеризация, появился Раст, из старых ЯП сильно апнули C++ – вот следы реального прогресса. Хотя для меня Раст под вопросом на фоне обновленного C++, но по крайней мере цель создания этого языка и круг решаемых задач понятны.

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

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

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

И напомню, что она хоть и deprecated, но в библиотеке все еще есть.

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

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

Вредительская логика.

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

Если установка шрифта для виджета не сработает, ничего страшного не случится.

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

Да все так, просто ты, опять же, оцениваешь это со своей позиции.

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

Цена меньше стоимости традиционного цикла разработки. Гномерам выгода.

Починить можно было много, но это деньги гномеров. Они ими распоряжаются.

Это абсолютно логичная позиция, но страдают в итоге пользователи. Это довольно грустно, но что поделать? Или лучше «отнять и поделить»?

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

Вредительская логика.

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

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

Скажем, сделали вместо стилей в виде ключ-значение поддержку CSS.

Сделали не нужно, а потом все страдают.

И что должна делать функция установить_значение_стиля(элемент, ключ)?

Да хотя бы ничего. Можно правило CSS сгенерировать.

Или сделали внутренним представлением текста со стилями HTML вместо своего велосипедного формата. Теперь обязаны предоставить конвертер произвольного HTML в тот велосипедный формат и обратно (ведь были функции чтения и записи из него)?

При таком изменении надо делать новый виджет. Например в WinApi одновременно есть несколько версий Rich Edit.

И самое главное, старый вариант ведь никуда не делся. Он по прежнему доступен в Интернете под старым номером версии.

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

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

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

Да лучше. Баг репорты можно игнорировать, программой с не теми шрифтами можно пользоваться, а с отсутствующими символами - нет. Плохо работающая программа лучше не работающей вообще. Чинить код прикладной программы может быть просто некому.

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

А что с GMapCatcher?

Там GTK 2, на GTK 3 она не работает.

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

При таком изменении надо делать новый виджет. Например в WinApi одновременно есть несколько версий Rich Edit.

Он и сделан. gtk3 называется.

Проблема не в том, что это «новые виджеты» с другими функциями, а в том, что у них несовместимый event loop и абстрактный класс «виджет» совсем другой.

В Windows все виджеты крутятся на общем event loop.

Сильная связность in wrong place очень увеличивает издержки прикладного программиста под Linux.

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

Проблема не в том, что это «новые виджеты» с другими функциями, а в том, что у них несовместимый event loop и сам класс абстрактный класс «виджет» совсем другой.

Это что там за новый текстовый HTML виджет, что аж цикл событий и базовый класс пришлось переделать? Event loop вроде бы в glib, разве нет?

В Windows все виджеты крутятся на общем event loop.

Можно в обрабатывать виджеты в разных потоках.

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

Event loop хоть и в glib, а два gtk в одном процессе не запустишь из-за конфликта имён функций. Это не COM…

и базовый класс пришлось переделать?

Да всё другое:

Use accessor functions instead of direct access. GTK+ 3 removes many implementation details and struct members from its public headers.

GtkObject has been removed in GTK+ 3. Its remaining functionality, the ::destroy signal, has been moved to GtkWidget.

In GTK+ 3, the GDK drawing API (which closely mimics the X drawing API, which is itself modeled after PostScript) has been removed. All drawing in GTK+ 3 is done via cairo.

Replace size_request by get_preferred_width/height. The request-phase of the traditional GTK+ geometry management has been replaced by a more flexible height-for-width system, which is described in detail in the API documentation (see the section called “Height-for-width Geometry Management”). As a consequence, the ::size-request signal and vfunc has been removed from GtkWidgetClass.

The GdkPixmap object and related functions have been removed. In the cairo-centric world of GTK+ 3, cairo surfaces take over the role of pixmaps.

GdkDrawable has been removed in GTK+ 3, together with GdkPixmap and GdkImage. The only remaining drawable class is GdkWindow.

The GtkWidget “expose-event” signal has been replaced by a new “draw” signal, which takes a cairo_t instead of an expose event.

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

Можно в обрабатывать виджеты в разных потоках.

АХАХА! Ты еще не знаешь, что в страшную сказку попал…

Это Линукс! Не поняли, да?

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