#include <gtk/gtk.h>
using namespace std;
struct struktura
{
    GtkWidget * sokno;
    GtkWidget * svbox;
    
    GtkWidget * start;
    GtkWidget * zasady;
    GtkWidget * statystyki;
    GtkWidget * ogrze;
    GtkWidget * wwyjdz;
    
    
    GtkWidget * hbox;
    GtkWidget * trudny;
    GtkWidget * latwy;
    
    GtkWidget * fixed2;
    GtkWidget * poletxt;
    
    GtkWidget * etgr;
    GtkWidget * wprowadz;
    GtkWidget * etwyb;
    GtkWidget * sep;
    GtkWidget * ramka;
    GtkWidget * wyniklab;
    GtkWidget * powrot;
    GtkWidget * wynik;
    
    GtkWidget * etykieta;
    GtkWidget * kontenerx;
    GtkWidget * fixlab;
    GtkWidget * graj;
    
    int kont;
    
    int czystart;
    const gchar * wczyt;
    const gchar * tab[ 10 ];
    int liczbazm;
    bool sprawdzdane;
    
};
void rysujmenu( GtkWidget * przycisk, gpointer dane )
{
    struct struktura * sss;
    sss =( struct struktura * ) dane;
    gtk_widget_set_size_request( sss->svbox, 245, 245 );
    gtk_box_pack_start( GTK_BOX( sss->svbox ), sss->start, TRUE, TRUE, 2 );
    gtk_box_pack_start( GTK_BOX( sss->svbox ), sss->zasady, TRUE, TRUE, 2 );
    gtk_box_pack_start( GTK_BOX( sss->svbox ), sss->statystyki, TRUE, TRUE, 2 );
    gtk_box_pack_start( GTK_BOX( sss->svbox ), sss->ogrze, TRUE, TRUE, 2 );
    gtk_box_pack_start( GTK_BOX( sss->svbox ), sss->wwyjdz, TRUE, TRUE, 2 );
    gtk_widget_show_all( sss->svbox );
}
void pokazmenu( GtkWidget * przycisk, gpointer dane )
{
    struct struktura * sss;
    sss =( struct struktura * ) dane;
    gtk_widget_hide( sss->fixed2 );
    gtk_box_pack_start( GTK_BOX( sss->svbox ), sss->start, TRUE, TRUE, 2 );
    gtk_box_pack_start( GTK_BOX( sss->svbox ), sss->zasady, TRUE, TRUE, 2 );
    gtk_box_pack_start( GTK_BOX( sss->svbox ), sss->statystyki, TRUE, TRUE, 2 );
    gtk_box_pack_start( GTK_BOX( sss->svbox ), sss->ogrze, TRUE, TRUE, 2 );
    gtk_box_pack_start( GTK_BOX( sss->svbox ), sss->wwyjdz, TRUE, TRUE, 2 );
    gtk_widget_show_all( sss->svbox );
}
void wybierzpoziom( GtkWidget * przycisk, gpointer dane )
{
    struct struktura * sss;
    sss =( struct struktura * ) dane;
    
    gtk_widget_hide( sss->svbox );
    sss->czystart = 1;
    gtk_fixed_put( GTK_FIXED( sss->hbox ), sss->etwyb, 10, 35 );
    gtk_fixed_put( GTK_FIXED( sss->hbox ), sss->trudny, 10, 100 );
    gtk_fixed_put( GTK_FIXED( sss->hbox ), sss->latwy, 150, 100 );
    gtk_widget_show_all( sss->hbox );
}
void rysujgra( GtkWidget * widget, gpointer dane )
{
    struct struktura * sss;
    sss =( struct struktura * ) dane;
    gtk_widget_hide( sss->hbox );
    gtk_fixed_put( GTK_FIXED( sss->fixed2 ), sss->wprowadz, 174, 10 );
    gtk_fixed_put( GTK_FIXED( sss->fixed2 ), sss->powrot, 2, 210 );
    gtk_fixed_put( GTK_FIXED( sss->fixed2 ), sss->etgr, 10, 10 );
    gtk_fixed_put( GTK_FIXED( sss->fixed2 ), sss->wynik, 213, 214 );
    gtk_fixed_put( GTK_FIXED( sss->fixed2 ), sss->wyniklab, 113, 214 );
    gtk_fixed_put( GTK_FIXED( sss->fixed2 ), sss->poletxt, 125, 10 );
    gtk_fixed_put( GTK_FIXED( sss->fixed2 ), sss->sep, 0, 30 );
    gtk_fixed_put( GTK_FIXED( sss->fixed2 ), sss->ramka, 0, 65 );
    gtk_fixed_put( GTK_FIXED( sss->fixed2 ), sss->wprowadz, 174, 10 );
    gtk_fixed_put( GTK_FIXED( sss->fixlab ), sss->etykieta, 10, 10 );
    gtk_fixed_put( GTK_FIXED( sss->fixlab ), sss->graj, 4, 2 );
    gtk_widget_show_all( sss->fixed2 );
    
    
}
void pobierz( GtkWidget * przycisk, gpointer dane )
{
    struct struktura * sss;
    sss =( struct struktura * ) dane;
    gtk_widget_hide( sss->graj );
    const gchar * zzz = "";
    
    const gchar * nic = "nic";
    const gchar * zle = "zle";
    const gchar * tr = "true";
    const gchar * fa = "false";
    
    
    
    
    
    const gchar * tab[ 10 ] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" };
    
    
    if( !g_strcmp0( sss->wczyt, tab[ 0 ] ) ||
    !g_strcmp0( sss->wczyt, tab[ 1 ] ) ||
    !g_strcmp0( sss->wczyt, tab[ 2 ] ) ||
    !g_strcmp0( sss->wczyt, tab[ 3 ] ) ||
    !g_strcmp0( sss->wczyt, tab[ 4 ] ) ||
    !g_strcmp0( sss->wczyt, tab[ 5 ] ) ||
    !g_strcmp0( sss->wczyt, tab[ 6 ] ) ||
    !g_strcmp0( sss->wczyt, tab[ 7 ] ) ||
    !g_strcmp0( sss->wczyt, tab[ 8 ] ) ||
    !g_strcmp0( sss->wczyt, tab[ 9 ] ) ||
    !g_strcmp0( sss->wczyt, zzz ) )
    {
        
        
        if( !g_strcmp0( sss->wczyt, tab[ 0 ] ) )
        {
            gtk_label_set_text( GTK_LABEL( sss->etykieta ), sss->tab[ 0 ] );
            sss->liczbazm = 1;
        }
        
        if( !g_strcmp0( sss->wczyt, tab[ 1 ] ) )
        {
            gtk_label_set_text( GTK_LABEL( sss->etykieta ), sss->tab[ 1 ] );
            sss->liczbazm = 2;
        }
        
        if( !g_strcmp0( sss->wczyt, tab[ 2 ] ) )
        {
            gtk_label_set_text( GTK_LABEL( sss->etykieta ), sss->tab[ 2 ] );
            sss->liczbazm = 3;
        }
        
        if( !g_strcmp0( sss->wczyt, tab[ 3 ] ) )
        {
            gtk_label_set_text( GTK_LABEL( sss->etykieta ), sss->tab[ 3 ] );
            sss->liczbazm = 4;
        }
        
        if( !g_strcmp0( sss->wczyt, tab[ 4 ] ) )
        {
            gtk_label_set_text( GTK_LABEL( sss->etykieta ), sss->tab[ 4 ] );
            sss->liczbazm = 5;
        }
        
        if( !g_strcmp0( sss->wczyt, tab[ 5 ] ) )
        {
            gtk_label_set_text( GTK_LABEL( sss->etykieta ), sss->tab[ 5 ] );
            sss->liczbazm = 6;
        }
        
        if( !g_strcmp0( sss->wczyt, tab[ 6 ] ) )
        {
            gtk_label_set_text( GTK_LABEL( sss->etykieta ), sss->tab[ 6 ] );
            sss->liczbazm = 7;
        }
        
        if( !g_strcmp0( sss->wczyt, tab[ 7 ] ) )
        {
            gtk_label_set_text( GTK_LABEL( sss->etykieta ), sss->tab[ 7 ] );
            sss->liczbazm = 8;
        }
        
        if( !g_strcmp0( sss->wczyt, tab[ 8 ] ) )
        {
            gtk_label_set_text( GTK_LABEL( sss->etykieta ), sss->tab[ 8 ] );
            sss->liczbazm = 9;
        }
        
        if( !g_strcmp0( sss->wczyt, tab[ 9 ] ) )
        {
            gtk_label_set_text( GTK_LABEL( sss->etykieta ), sss->tab[ 9 ] );
            sss->liczbazm = 10;
        }
        
        sss->sprawdzdane = true;
        
        if( !g_strcmp0( sss->wczyt, zzz ) )
        {
            gtk_label_set_text( GTK_LABEL( sss->etykieta ), nic );
            sss->sprawdzdane = false;
        }
        
    } 
    else
    {
        gtk_label_set_text( GTK_LABEL( sss->etykieta ), zle );
        sss->sprawdzdane = false;
    }
    
    gtk_entry_set_text( GTK_ENTRY( sss->poletxt ), zzz );
    
    sss->wczyt = gtk_entry_get_text( GTK_ENTRY( sss->poletxt ) );
    
    
    
    
}
void gtrudny( GtkWidget * przycisk, gpointer dane )
{
    
    struct struktura * sss;
    sss =( struct struktura * ) dane;
    const gchar * tr = "true";
    const gchar * fa = "false";
    
    gtk_widget_hide( sss->graj );
    const gchar * zm[ 3 ] = { "1", "2", "3" };
    g_signal_connect( G_OBJECT( sss->wprowadz ), "clicked", G_CALLBACK( pobierz ), sss ); 
    
    
    
    
    
    
    g_print( "Wartość %d\n", sss->sprawdzdane );
    
    if( sss->sprawdzdane == true )
    {
        gtk_label_set_text( GTK_LABEL( sss->etykieta ), tr );
        g_print( "aaWartość %d\n", sss->sprawdzdane );
    }
    else
    {
        gtk_label_set_text( GTK_LABEL( sss->etykieta ), fa );
        g_print( "bbWartość %d\n", sss->sprawdzdane );
    }
    
    
}
int main( int argc, char * argv[] )
{
    struct struktura sss;
    
    GtkWidget * okno;
    GtkWidget * vbox;
    
    GtkWidget * pstart;
    GtkWidget * pzasady;
    GtkWidget * pstatystyki;
    GtkWidget * pogrze;
    GtkWidget * wyjdz;
    
    GtkWidget * pokaz; 
    
    GtkWidget * phboxwp;
    GtkWidget * ptrudny;
    GtkWidget * platwy;
    GtkWidget * kontener2;
    GtkWidget * kontener;
    GtkWidget * etwybx;
    GtkWidget * kontener3;
    
    GtkWidget * etgrx;
    GtkWidget * ramkax;
    GtkWidget * sepx;
    GtkWidget * wyniklabx;
    GtkWidget * entryx;
    GtkWidget * etx;
    GtkWidget * wynikx;
    GtkWidget * fix2;
    GtkWidget * wprowx;
    GtkWidget * fixlabx;
    GtkWidget * grajx;
    
    
    gtk_init( & argc, & argv );
    sss.sokno = gtk_window_new( GTK_WINDOW_TOPLEVEL );
    gtk_window_set_position( GTK_WINDOW( sss.sokno ), GTK_WIN_POS_CENTER );
    gtk_window_set_default_size( GTK_WINDOW( sss.sokno ), 250, 250 );
    gtk_window_set_title( GTK_WINDOW( sss.sokno ), "Gra 1.0" );
    gtk_container_set_border_width( GTK_CONTAINER( sss.sokno ), 5 );
    gtk_window_set_opacity( GTK_WINDOW( sss.sokno ), 1 );
    
    sss.tab = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10" };
    
    ptrudny = gtk_button_new_with_label( "Trudny" );
    platwy = gtk_button_new_with_label( "Łatwy" );
    sss.trudny = ptrudny;
    sss.latwy = platwy;
    
    sss.powrot = gtk_button_new_with_label( "Powrót do menu" );
    sss.czystart = 0;
    
    pstart = gtk_button_new_with_label( "Start" );
    pzasady = gtk_button_new_with_label( "Zasady" );
    pstatystyki = gtk_button_new_with_label( "Statystyki" );
    pogrze = gtk_button_new_with_label( "O grze" );
    wyjdz = gtk_button_new_with_label( "Wyjdź" );
    
    sss.start = pstart;
    sss.zasady = pzasady;
    sss.statystyki = pstatystyki;
    sss.ogrze = pogrze;
    sss.wwyjdz = wyjdz;
    
    sss.sprawdzdane = false;
    
    
    kontener = gtk_fixed_new();
    gtk_container_add( GTK_CONTAINER( sss.sokno ), kontener );
    sss.kontenerx = kontener;
    gtk_widget_set_size_request( sss.kontenerx, 245, 245 );
    
    kontener2 = gtk_vbox_new( FALSE, 1 );
    gtk_container_add( GTK_CONTAINER( kontener ), kontener2 );
    sss.svbox = kontener2;
    
    fix2 = gtk_fixed_new();
    gtk_container_add( GTK_CONTAINER( sss.kontenerx ), fix2 );
    sss.fixed2 = fix2;
    char * txt = "<span fgcolor='#6666CC'><span font='14'>Wybierz poziom trudności:</span></span>";
    etwybx = gtk_label_new( txt );
    gtk_label_set_markup( GTK_LABEL( etwybx ), txt );
    sss.etwyb = etwybx;
    
    kontener3 = gtk_fixed_new();
    gtk_container_add( GTK_CONTAINER( sss.kontenerx ), kontener3 );
    sss.hbox = kontener3;
    gtk_widget_set_size_request( sss.trudny, 85, 35 );
    gtk_widget_set_size_request( sss.latwy, 85, 35 );
    
    
    char * txt22 = "<span fgcolor='#6666CC'><span font='14'>Podaj liczbę:</span></span>";
    char * txt2 = "<span fgcolor='#191970'><span font='11'>Aktualny wynik:</span></span>";
    char * txt4 = "teezstthhhh                                 ";
    char * txt3 = "<span fgcolor='#191970'><span font='11'>100</span></span>";
    etgrx = gtk_label_new( txt22 );
    gtk_label_set_markup( GTK_LABEL( etgrx ), txt22 );
    sss.etgr = etgrx;
    
    wynikx = gtk_label_new( txt3 );
    gtk_label_set_markup( GTK_LABEL( wynikx ), txt3 );
    sss.wynik = wynikx;
    
    
    wyniklabx = gtk_label_new( txt2 );
    gtk_label_set_markup( GTK_LABEL( wyniklabx ), txt2 );
    sss.wyniklab = wyniklabx;
    
    entryx = gtk_entry_new();
    gtk_widget_set_size_request( entryx, 40, 25 );
    sss.poletxt = entryx;
    
    sepx = gtk_hseparator_new();
    gtk_widget_set_size_request( sepx, 237, 42.5 );
    sss.sep = sepx;
    
    ramkax = gtk_frame_new( "Stan rywalizacji:" );
    gtk_frame_set_shadow_type( GTK_FRAME( ramkax ), GTK_SHADOW_ETCHED_OUT );
    
    gtk_widget_set_size_request( ramkax, 237, 135 );
    sss.ramka = ramkax;
    
    wprowx = gtk_button_new_with_label( "OK" );
    gtk_widget_set_size_request( wprowx, 55, 26.9 );
    sss.wprowadz = wprowx;
    
    fixlabx = gtk_fixed_new();
    gtk_container_add( GTK_CONTAINER( sss.ramka ), fixlabx );
    sss.fixlab = fixlabx;
    
    etx = gtk_label_new( txt4 );
    sss.etykieta = etx;
    
    grajx = gtk_button_new_with_label( "Kliknij, aby zacząć!" );
    gtk_widget_set_size_request( grajx, 226, 112 );
    sss.graj = grajx;
    
    if( sss.czystart == 0 )
    {
        rysujmenu( NULL, & sss );
    }
    
    g_signal_connect( G_OBJECT( sss.graj ), "clicked", G_CALLBACK( gtrudny ), & sss );
    g_signal_connect( G_OBJECT( sss.powrot ), "clicked", G_CALLBACK( pokazmenu ), & sss );
    g_signal_connect( G_OBJECT( sss.trudny ), "clicked", G_CALLBACK( rysujgra ), & sss );
    g_signal_connect( G_OBJECT( sss.start ), "clicked", G_CALLBACK( wybierzpoziom ), & sss );
    g_signal_connect( G_OBJECT( wyjdz ), "clicked", G_CALLBACK( gtk_main_quit ), NULL );
    g_signal_connect( G_OBJECT( sss.sokno ), "destroy", G_CALLBACK( gtk_main_quit ), NULL );
    
    gtk_widget_show_all( sss.sokno );
    gtk_main();
    return 0;
}