Advertisement
dgulczynski

10_gtk

Dec 21st, 2017
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.77 KB | None | 0 0
  1. #include <string.h>
  2. #include <gtk/gtk.h>
  3.  
  4. void pierwszaPermutacja(int n, int t[])
  5. {
  6.     for(int i = 0; i<n; i++)
  7.         t[i]=n-i;
  8.     return;
  9. }
  10.  
  11. _Bool nastepnaPermutacja(int n, int t[])
  12. {
  13.     if(n==1) return 0;
  14.     int indeksN;
  15.     for(int i = 0; i<n; i++)
  16.         if(t[i]==n) indeksN=i;
  17.     if(indeksN==n-1)
  18.     {
  19.         if(!nastepnaPermutacja(n-1,t))
  20.             return 0;
  21.         for(int i = n-1; i>=0; i--)
  22.             t[i]=t[i-1];
  23.         t[0]=n;
  24.         return 1;
  25.     }
  26.     else
  27.     {
  28.         t[indeksN]=t[indeksN+1];
  29.         t[indeksN+1]=n;
  30.         return 1;
  31.     }
  32. }
  33. void konwertuj(char* e[], int p[], int n)
  34. {
  35.     for(int i =0; i<n; i++)
  36.         sprintf(e[i],"%d",p[i]);
  37. }
  38. typedef struct daneKwadratu {
  39.  char** etykiety;
  40.  int* permutacja;
  41.  int n;
  42.  GtkWidget** pole;
  43.  }daneKwadratu;
  44.  
  45.  
  46.  
  47. static GtkWidget *text;
  48.  
  49.  
  50. static void test_nacisniecia( GtkWidget *widget,gpointer data)
  51. {
  52. /*
  53.     if(nastepnaPermutacja(n, permutacja))
  54.     {
  55.         konwertuj(etykiety,permutacja,n);
  56.         for(int i =0; i<n; i++)
  57.             gtk_label_set_text(GTK_LABEL(pole[i]), etykiety[n-i-1]);
  58.     }
  59.     else
  60.     { */
  61.         g_print("GTK-test - %s zastal nacisniety\n", (gchar *) data);
  62.    // }
  63. }
  64.  
  65. static void wyjscie_przyciskiem( GtkWidget *widget,gpointer data)
  66. {
  67.     gtk_main_quit();
  68. }
  69.  
  70.  
  71. static void wypisz_wprowadzony_tekst( GtkWidget *widget,GtkWidget *text)
  72. {
  73.     const gchar *wejscie;
  74.     wejscie = gtk_entry_get_text (GTK_ENTRY (text));
  75.     g_print ("GTK-test wprowadzono: %s\n", wejscie);
  76. }
  77.  
  78. static void dodaj_do_text(GtkWidget *widget, gpointer data)
  79. {
  80.     gint tmp_pos = gtk_entry_get_text_length(GTK_ENTRY(text));
  81.  
  82.     if(strcmp((gchar*)data, "\n") == 0)
  83.         gtk_entry_set_text(GTK_ENTRY(text), "");
  84.     else
  85.         gtk_editable_insert_text(GTK_EDITABLE(text), (gchar*)data, -1, &tmp_pos);
  86. }
  87.  
  88. int main( int   argc,char *argv[] )
  89. {
  90.     gtk_init(&argc, &argv);
  91.     argc = 4;
  92.     int n = argc*argc;
  93.     int permutacja[n];
  94.     char* etykiety[n];
  95.     for(int i =0; i<n; i++)
  96.         etykiety[i] = malloc(sizeof(char)*3);
  97.     pierwszaPermutacja(n, permutacja);
  98.     konwertuj(etykiety, permutacja, n);
  99.  
  100.  
  101.  
  102.     GtkWidget *window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
  103.  
  104.     gtk_window_set_title(GTK_WINDOW(window),"Kwadraty magiczne");
  105.     gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER);
  106.     gtk_container_set_border_width(GTK_CONTAINER(window), 10);
  107.  
  108.     g_signal_connect(G_OBJECT(window), "destroy",G_CALLBACK(gtk_main_quit), NULL);
  109.  
  110.     GtkWidget *box1 = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
  111.  
  112.     gtk_container_add(GTK_CONTAINER(window), box1);
  113.     GtkWidget *button = gtk_button_new_with_label("Kliknij tu");
  114.     g_signal_connect(G_OBJECT(button), "clicked",
  115.                      G_CALLBACK(test_nacisniecia),(gpointer)"Przycisk");
  116.  
  117.     gtk_box_pack_start(GTK_BOX(box1), button, TRUE, TRUE, 0);
  118.  
  119.  
  120.  
  121.     GtkWidget *grid = gtk_grid_new();
  122.     gtk_grid_set_row_spacing(GTK_GRID(grid), 5);
  123.     gtk_grid_set_row_homogeneous(GTK_GRID(grid), TRUE);
  124.     gtk_grid_set_column_spacing(GTK_GRID(grid), 5);
  125.     gtk_grid_set_column_homogeneous(GTK_GRID(grid), TRUE);
  126.     gtk_box_pack_start(GTK_BOX(box1), grid, TRUE, TRUE, 0);
  127.  
  128.     GtkWidget* pole[n];
  129.     for(int i = 0; i <n; i++)
  130.     {
  131.         pole[i] = gtk_label_new(etykiety[n-i-1]);
  132.         gtk_grid_attach(GTK_GRID(grid), pole[i], i%argc, i/argc+1, 1, 1);
  133.     }
  134.  
  135.     GtkWidget *box2 = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
  136.     button = gtk_button_new_with_label("Koniec");
  137.     g_signal_connect(G_OBJECT(button), "clicked",G_CALLBACK(wyjscie_przyciskiem), NULL);
  138.     gtk_box_pack_start(GTK_BOX(box2), button, TRUE, FALSE, 0);
  139.     gtk_box_pack_start(GTK_BOX(box1), box2, TRUE, TRUE, 0);
  140.  
  141.     gtk_widget_show_all(window);
  142.     gtk_main();
  143.  
  144.     return 0;
  145. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement