glade3, gtk i dynamiczne okna dialogowe

Potrzebujesz pomocy z C, C++, perl, python, itp.
szuwar7
Posty: 29
Rejestracja: 09 czerwca 2007, 19:18

glade3, gtk i dynamiczne okna dialogowe

Post autor: szuwar7 »

Mam taki mały problemik. Chciałbym dynamicznie tworzyć okna dialogowe pobierając interfejs z pliku xml. Generalnie wiem jak się pobiera widgety, ale problem występuje kiedy zamykam okno a później próbuję uruchomić je jeszcze raz. Oto przykład.

Tworzenie okna w main:

Kod: Zaznacz cały

window2 = glade_xml_get_widget (gxml, "dialog1");
Zamykanie okna po naciśnięciu przycisku:

Kod: Zaznacz cały

static void on_button1_clicked (GtkWidget* widget, gpointer user_data)
{

	gtk_widget_destroy(window2);
	
}
Próba uruchomienia okna po wciśnięciu innego przycisku:

Kod: Zaznacz cały

static void on_directory_button_clicked (GtkWidget* widget, gpointer user_data)
{
	window2 = glade_xml_get_widget (gxml, "dialog1");
	gtk_dialog_run (GTK_DIALOG (window2));
	gtk_widget_show (window2);
}
i tutaj właśnie nie działa.

Po naciśnięciu przycisku nic się nie dzieje (sygnał jest przypisany do funkcji).
Awatar użytkownika
Qmaty
Posty: 17
Rejestracja: 17 września 2008, 00:48
Lokalizacja: Poznañ

Post autor: Qmaty »

Z tego co kojarzę to twoje okno jest (chyba) alokowane dynamicznie w chwili ładowania pliku xml z szablonem.
Samym get_widget jedynie uzyskujesz wskaźnik do okno które jest już utworzone w pamięci (uzyskujesz tylko wskaźnik do niego).
A wiec kolejno : ładujesz szablon i alokujesz go tym samym, uzyskujesz wskaźnik do okna które po prostu usuwasz (pusty obiekt w szablonie) do którego później próbujesz się odwołać i stąd zero reakcji.

Przeładowanie pliku xml z szablonem powinno pomóc.
Awatar użytkownika
grzesiek
Junior Member
Posty: 932
Rejestracja: 06 stycznia 2008, 10:41
Lokalizacja: Białystok

Post autor: grzesiek »

ODPOWIEDZ