есть ли HildonStackableWindows в Diablo?

Интересует возможность смены содержимого в одном TOPLEVEL окне на Diablo.. Или придется создавать несколько окон и переключаться через gtk_widget_hide и gtk_widget_show?
Создавать несколько топлевелов ни к чему, тем более, что переключение между ними не пройдёт незамеченным для пользователя и вызовет характерный звук :)

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

Накидал небольшой пример:

#include <gtk/gtk.h>

GtkWindow *window;
GtkWidget *button1;
GtkWidget *button2;

void on_button1(GtkButton *source, gpointer user_data)
{
gtk_container_remove(GTK_CONTAINER(window), button1);
gtk_container_add(GTK_CONTAINER(window), button2);
}

void on_button2(GtkButton *source, gpointer user_data)
{
gtk_container_remove(GTK_CONTAINER(window), button2);
gtk_container_add(GTK_CONTAINER(window), button1);
}

int main(int argc, char *argv[])
{
gtk_init(&argc, &argv);

window = GTK_WINDOW(gtk_window_new(GTK_WINDOW_TOPLEVEL));

button1 = gtk_button_new_with_label(\"Button 1\");
button2 = gtk_button_new_with_label(\"Button 2\");

g_object_ref(G_OBJECT(button1));
g_object_ref(G_OBJECT(button2));

gtk_widget_show(button1);
gtk_widget_show(button2);

g_signal_connect(G_OBJECT(button1), \"clicked\", G_CALLBACK(on_button1), 0);
g_signal_connect(G_OBJECT(button2), \"clicked\", G_CALLBACK(on_button2), 0);

gtk_container_add(GTK_CONTAINER(window), button1);


g_signal_connect(G_OBJECT(window), \"destroy\", G_CALLBACK(gtk_main_quit), 0);

gtk_widget_show_all(GTK_WIDGET(window));

gtk_main();
}


Тут две кнопки сменяют друг друга при нажатии
Благодарю. Как раз то, что нужно. Только не могу понять теперь в какой контейнер вставить несколько GtkScrollableWindow.. :/ Не подскажете?
Хм. Не понял вопроса. Два ScrollableWindow должны сменять друг друга в одном окне? Тогда нужно просто добавить в окно один, а потом первый убрать и вставнить вместо него другой.

Или я вас не понял и вы другое имеете в виду?
Что вы в результате хотите получить?
Я извиняюсь, не уточнил сразу.. Я основные графические элементы создаю в GtkBuilder, а там 2 равнозначных ScrollableWindow не создаются в одном родителе. И так пришлось бы одно создать в GtkBuilder'е, а остальные вручную. Я уже пошел более простым путем - создал окно с вкладками, а в нем уже на каждой вкладке ScrollableWindow. Правда теперь при запуске выдает 4 критических ошибки
GLIB CRITICAL ** Gtk - gtk_buildable_parser_finished: assertion `GTK_IS_BUILDABLE (buildable)' failed

Сижу, думаю... :)
Разобрался: каждый GtkNotebook, который создается в Glade(в проекте типа GtkBuilder) имеет 3 вкладки по умолчанию, и если хоть одна из них не заполнена чем-либо, выдает такую ошибку.
Отлично!

Я-то привык по старинке создавать весь UI вручную в коде программы :) Поэтому с GtkBuilder дела не имел.

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

А вам случайно не встречались программы на линукс для решения задач линейного программирования(симплексного метода, транспортной задачи и остального)?
Полезная для студентов тема, так держать.
Правда, если экзамен послезавтра, то сегодня было бы полезнее учить предмет, а не мучить gtk :D

Решалками ЛП-задач под linux не интересовался, хотя в пору студенчества приходилось их решать довольно много :)
Впрочем, гугл сразу находит:
http://www.zweigmedia.com/RealWorld/simplex.html
http://sourceforge.net/projects/lpsolve/
Эх блин, сдавал когда-то такие лабы в универе, писанные на питоне, да вот не имею привычки сохранять их.... :(
DarkTroll:Эх блин, сдавал когда-то такие лабы в универе, писанные на питоне, да вот не имею привычки сохранять их.... :(

оооочень жаль, но что поделаешь.. После сессии уже буду мучиться над ЛП..