Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <string.h>
- #include <gtk/gtk.h>
- void pierwszaPermutacja(int n, int t[])
- {
- for(int i = 0; i<n; i++)
- t[i]=n-i;
- return;
- }
- _Bool nastepnaPermutacja(int n, int t[])
- {
- if(n==1) return 0;
- int indeksN;
- for(int i = 0; i<n; i++)
- if(t[i]==n) indeksN=i;
- if(indeksN==n-1)
- {
- if(!nastepnaPermutacja(n-1,t))
- return 0;
- for(int i = n-1; i>=0; i--)
- t[i]=t[i-1];
- t[0]=n;
- return 1;
- }
- else
- {
- t[indeksN]=t[indeksN+1];
- t[indeksN+1]=n;
- return 1;
- }
- }
- void konwertuj(char* e[], int p[], int n)
- {
- for(int i =0; i<n; i++)
- sprintf(e[i],"%d",p[i]);
- }
- typedef struct daneKwadratu {
- char** etykiety;
- int* permutacja;
- int n;
- GtkWidget** pole;
- }daneKwadratu;
- static GtkWidget *text;
- static void test_nacisniecia( GtkWidget *widget,gpointer data)
- {
- /*
- if(nastepnaPermutacja(n, permutacja))
- {
- konwertuj(etykiety,permutacja,n);
- for(int i =0; i<n; i++)
- gtk_label_set_text(GTK_LABEL(pole[i]), etykiety[n-i-1]);
- }
- else
- { */
- g_print("GTK-test - %s zastal nacisniety\n", (gchar *) data);
- // }
- }
- static void wyjscie_przyciskiem( GtkWidget *widget,gpointer data)
- {
- gtk_main_quit();
- }
- static void wypisz_wprowadzony_tekst( GtkWidget *widget,GtkWidget *text)
- {
- const gchar *wejscie;
- wejscie = gtk_entry_get_text (GTK_ENTRY (text));
- g_print ("GTK-test wprowadzono: %s\n", wejscie);
- }
- static void dodaj_do_text(GtkWidget *widget, gpointer data)
- {
- gint tmp_pos = gtk_entry_get_text_length(GTK_ENTRY(text));
- if(strcmp((gchar*)data, "\n") == 0)
- gtk_entry_set_text(GTK_ENTRY(text), "");
- else
- gtk_editable_insert_text(GTK_EDITABLE(text), (gchar*)data, -1, &tmp_pos);
- }
- int main( int argc,char *argv[] )
- {
- gtk_init(&argc, &argv);
- argc = 4;
- int n = argc*argc;
- int permutacja[n];
- char* etykiety[n];
- for(int i =0; i<n; i++)
- etykiety[i] = malloc(sizeof(char)*3);
- pierwszaPermutacja(n, permutacja);
- konwertuj(etykiety, permutacja, n);
- GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- gtk_window_set_title(GTK_WINDOW(window),"Kwadraty magiczne");
- gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
- gtk_container_set_border_width(GTK_CONTAINER(window), 10);
- g_signal_connect(G_OBJECT(window), "destroy",G_CALLBACK(gtk_main_quit), NULL);
- GtkWidget *box1 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
- gtk_container_add(GTK_CONTAINER(window), box1);
- GtkWidget *button = gtk_button_new_with_label("Kliknij tu");
- g_signal_connect(G_OBJECT(button), "clicked",
- G_CALLBACK(test_nacisniecia),(gpointer)"Przycisk");
- gtk_box_pack_start(GTK_BOX(box1), button, TRUE, TRUE, 0);
- GtkWidget *grid = gtk_grid_new();
- gtk_grid_set_row_spacing(GTK_GRID(grid), 5);
- gtk_grid_set_row_homogeneous(GTK_GRID(grid), TRUE);
- gtk_grid_set_column_spacing(GTK_GRID(grid), 5);
- gtk_grid_set_column_homogeneous(GTK_GRID(grid), TRUE);
- gtk_box_pack_start(GTK_BOX(box1), grid, TRUE, TRUE, 0);
- GtkWidget* pole[n];
- for(int i = 0; i <n; i++)
- {
- pole[i] = gtk_label_new(etykiety[n-i-1]);
- gtk_grid_attach(GTK_GRID(grid), pole[i], i%argc, i/argc+1, 1, 1);
- }
- GtkWidget *box2 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
- button = gtk_button_new_with_label("Koniec");
- g_signal_connect(G_OBJECT(button), "clicked",G_CALLBACK(wyjscie_przyciskiem), NULL);
- gtk_box_pack_start(GTK_BOX(box2), button, TRUE, FALSE, 0);
- gtk_box_pack_start(GTK_BOX(box1), box2, TRUE, TRUE, 0);
- gtk_widget_show_all(window);
- gtk_main();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement