Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Program z fraktalami, Gtk [C]

Ostatnio zmodyfikowano 2016-01-26 10:37
Autor Wiadomość
Isild
Temat założony przez niniejszego użytkownika
Program z fraktalami, Gtk [C]
» 2016-01-26 10:37:01
Witam, aktualnie próbuję napisać program do generowania fraktali w gtk.
Napisałem sobie już wstępnie prawie cały interfejs programu oraz algorytm do obliczania fraktala, ale zawsze muszą się znaleźć jakieś problemy.

Stworzyłem okno do wprowadzania liczby zespolonej, oraz wybrania wzoru.
Stworzyłem również przycisk generuj, chciałbym żeby po jego naciśnięciu włączyło się nowe okno(w moim przypadku nowa funkcja void z nowym oknem, zawierający pole z wygenerowanym fraktalem).
Do stworzenia combo boxa z wzorami użyłem:

combo = gtk_combo_box_text_new();
    gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(combo), NULL, "Wzor 1.");
    gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(combo), NULL, "Wzor 2.");
    gtk_combo_box_text_append(GTK_COMBO_BOX_TEXT(combo), NULL, "Wzor 3.");
    gtk_combo_box_set_active(GTK_COMBO_BOX(combo), 1);
    gtk_container_add(GTK_CONTAINER(kontener), combo);


Mój problem polega na tym, że nie wiem jak przekazać wybrany wzór, wpisaną liczbe zespoloną do kolejnego okna, oraz stworzenia w nowym oknie obszaru w którym wygeneruje się fraktal, oraz jak ten fraktal wygenerować.


Chodzi mi o te kluczowe sprawy:
1. Liczbe zespoloną podaję w dwóch oknach w RE i IM, to jest wpisywanie w stringu tak? Chcę ją z pomocą atof zamienić na int i przesłać do nowej funkcji.
Takim sposobem mam zadeklarowane wprowadzanie funkcji:

 wejscieRE = gtk_entry_new();
    gtk_container_add(GTK_CONTAINER(kontener), wejscieRE);
    gtk_widget_set_size_request(wejscieRE, 10, 10);


po tym mam przekazać do funkcji *wejscieRE i *wejscieIM?

2. Z tym combo boxem nie wiem jak jest, w tym kodzie co napisałem, to po wybraniu jakiegoś wzoru wybór użytkownika jest gdzieś zapisany?

3. Przycisk do generowania utworzyłem tak:

 g_signal_connect(G_OBJECT(generuj), "clicked", G_CALLBACK(obszar_generowania),(gpointer)etykieta);


Czy ta opcja jest poprawna do przekazywania tych wskaźników? Jeśli tak to gdzie mam dodać bo jak wprowadzałem coś takiego:
 

g_signal_connect(G_OBJECT(generuj), "clicked", G_CALLBACK(obszar_generowania(wejscieRE)),(gpointer)etykieta);

  to nie działa ;/

Nagłówek funkcji miał by tak wyglądać?

 void obszar_generowania(GtkWidget *wejscieRE, GtkWidget *wejsceIM, (i ten wybór wzoru, nie wiem jak go przekazać), gpointer etykieta);



Jeszcze mam pytanko dy rysowania w GDA(GtkDrawningArea), jeśli mój program np liczy piksel biały i czarny czyli 1 i 0, to jaka komenda zamieni te obliczenia na piksel biały i czarny oraz wstawi go do GDA?


Bardzo proszę o pomoc, oraz dokładne wytłumaczenie, ponieważ jestem zielony w tej sprawie, oraz nie jestem specjalistą w używaniu wskaźników, cały czas się jeszcze uczę :)
P-144019
« 1 »
  Strona 1 z 1