1

Тема: есть ли HildonStackableWindows в Diablo?

Интересует возможность смены содержимого в одном TOPLEVEL окне на Diablo.. Или придется создавать несколько окон и переключаться через gtk_widget_hide и gtk_widget_show?

N810

2

Re: есть ли HildonStackableWindows в Diablo?

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

Можно просто удалить один виджет из окна и добавить другой. При этом не забыв изначально сделать первому виджету 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();
}

Тут две кнопки сменяют друг друга при нажатии

N̶8̶0̶0̶ + N̶8̶1̶0̶ + N̶9̶0̶0̶ + N̶9̶5̶0̶ + N̶9̶ ̶C̶y̶a̶n̶ + N̶9̶ ̶B̶l̶a̶c̶k̶

3

Re: есть ли HildonStackableWindows в Diablo?

Благодарю. Как раз то, что нужно. Только не могу понять теперь в какой контейнер вставить несколько GtkScrollableWindow.. hmm  Не подскажете?

N810

4

Re: есть ли HildonStackableWindows в Diablo?

Хм. Не понял вопроса. Два ScrollableWindow должны сменять друг друга в одном окне? Тогда нужно просто добавить в окно один, а потом первый убрать и вставнить вместо него другой.

Или я вас не понял и вы другое имеете в виду?
Что вы в результате хотите получить?

N̶8̶0̶0̶ + N̶8̶1̶0̶ + N̶9̶0̶0̶ + N̶9̶5̶0̶ + N̶9̶ ̶C̶y̶a̶n̶ + N̶9̶ ̶B̶l̶a̶c̶k̶

5

Re: есть ли HildonStackableWindows в Diablo?

Я извиняюсь, не уточнил сразу.. Я основные графические элементы создаю в GtkBuilder, а там 2 равнозначных ScrollableWindow не создаются в одном родителе. И так пришлось бы одно создать в GtkBuilder'е, а остальные вручную. Я уже пошел более простым путем - создал окно с вкладками, а в нем уже на каждой вкладке ScrollableWindow. Правда теперь при запуске выдает 4 критических ошибки

GLIB CRITICAL ** Gtk - gtk_buildable_parser_finished: assertion `GTK_IS_BUILDABLE (buildable)' failed

Сижу, думаю... smile

N810

6

Re: есть ли HildonStackableWindows в Diablo?

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

N810

7

Re: есть ли HildonStackableWindows в Diablo?

Отлично!

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

А что за софт пишете, если не секрет?

N̶8̶0̶0̶ + N̶8̶1̶0̶ + N̶9̶0̶0̶ + N̶9̶5̶0̶ + N̶9̶ ̶C̶y̶a̶n̶ + N̶9̶ ̶B̶l̶a̶c̶k̶

8

Re: есть ли HildonStackableWindows в Diablo?

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

А вам случайно не встречались программы на линукс для решения задач линейного программирования(симплексного метода, транспортной задачи и остального)?

N810

9

Re: есть ли HildonStackableWindows в Diablo?

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

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

N̶8̶0̶0̶ + N̶8̶1̶0̶ + N̶9̶0̶0̶ + N̶9̶5̶0̶ + N̶9̶ ̶C̶y̶a̶n̶ + N̶9̶ ̶B̶l̶a̶c̶k̶

10

Re: есть ли HildonStackableWindows в Diablo?

Эх блин, сдавал когда-то такие лабы в универе, писанные на питоне, да вот не имею привычки сохранять их....  sad

Samsung i9001 | Nokia N91 | Acer Aspire 5535 | Acorp W422G
Продал таблетку... Теперь жалею...

11

Re: есть ли HildonStackableWindows в Diablo?

DarkTroll пишет:

Эх блин, сдавал когда-то такие лабы в универе, писанные на питоне, да вот не имею привычки сохранять их....  sad

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

N810