Новичковая проблема с GTK. (Как нарисовать окно?)

Модератор: Модераторы разделов

Lockywolf
Сообщения: 56

Новичковая проблема с GTK.

Сообщение Lockywolf »

Собственно, пытаюсь написать программу, умеющую использовать различные интерфейсы(GTK/ETK/Windows)

Поэтому собcтвенно, хочется разделить логику программы и GUI.
Ботаю GTK по API reference, и вот что непонятно: когда мы нарисовали окошко, мы запускаем gtk_main()
И на этом управление переходит к GTK. То есть вся логика программы должны быть "внутри" объектов GTK.
(ну например, прикручена к нажатию кнопки)

Мне же хочется иметь main loop, который будет делать кучу всего, в частности обновлять окно.
Чем-нибудь вроде

Код: Выделить всё

while(TRUE)
{
do_something();
void refresh_window(void)
{
  if(toolkit==GTK)
  {refersh_window_for_gtk();}
  elseif(toolkit==ETK)
  {refresh_window_for_ETK();}
  else
  {refresh_window_for_windows();}
}
do_something_else();
}


Как это можно реализовать?

То есть есть мысль, конечно, зафигачить 2 потока.
В одном пускать GUI, а во втором логику, но это будет ни фига не портируемо, или прийдется еще и несколько реализаций через потоки тащить(для винды, линукса, итд)
Спасибо сказали:
Аватара пользователя
RasenHerz
Сообщения: 1341
ОС: Arch Linux amd64

Re: Новичковая проблема с GTK.

Сообщение RasenHerz »

Работать с GUI из разных потоков является очень-очень плохой идеей. Лучший, на мой взгляд, вариант - реализовать GUI в виде плагинов к ядру программы.
Спасибо сказали:
Serik
Сообщения: 149
ОС: SuSE Linux

Re: Новичковая проблема с GTK.

Сообщение Serik »

Используйте g_idle_add
Спасибо сказали: